pre-build.sh

Former-commit-id: 58220a0ee1c48708eed3d172d6884a9f3617ffe9 [formerly 0d570e5a54030b9c4f7e280b55816a221438df72] [formerly 3c420b9ecd469d03c3ddfafeb33d4451a2315d55 [formerly 191a3791e0edc4f474e9d86f85002d404a306710]]
Former-commit-id: 0f82a221f0201448eecd54e98ac95fcdfea7ede0 [formerly 67ce3f7f0945b90ced9d7b11017286753afd8075]
Former-commit-id: a91572e8026c2290095d02bf3ef125591145dbc7
This commit is contained in:
Henrique Dias
2017-03-26 11:24:21 +01:00
parent e0aef17c94
commit 0a60d711ff
7 changed files with 746 additions and 741 deletions

View File

@@ -1,23 +1,23 @@
'use strict';
'use strict'
var listing = {
selectMultiple: false
};
}
listing.reload = function (callback) {
let request = new XMLHttpRequest();
let request = new XMLHttpRequest()
request.open('GET', window.location);
request.setRequestHeader('Minimal', 'true');
request.send();
request.open('GET', window.location)
request.setRequestHeader('Minimal', 'true')
request.send()
request.onreadystatechange = function () {
if(request.readyState == 4) {
if(request.status == 200) {
document.querySelector('body main').innerHTML = request.responseText;
listing.addDoubleTapEvent();
if (request.readyState === 4) {
if (request.status === 200) {
document.querySelector('body main').innerHTML = request.responseText
listing.addDoubleTapEvent()
if(typeof callback == 'function') {
callback();
if (typeof callback === 'function') {
callback()
}
}
}
@@ -25,281 +25,281 @@ listing.reload = function (callback) {
}
listing.itemDragStart = function (event) {
let el = event.target;
let el = event.target
for(let i = 0; i < 5; i++) {
if(!el.classList.contains('item')) {
el = el.parentElement;
for (let i = 0; i < 5; i++) {
if (!el.classList.contains('item')) {
el = el.parentElement
}
}
event.dataTransfer.setData("id", el.id);
event.dataTransfer.setData("name", el.querySelector('.name').innerHTML);
event.dataTransfer.setData('id', el.id)
event.dataTransfer.setData('name', el.querySelector('.name').innerHTML)
}
listing.itemDragOver = function (event) {
event.preventDefault();
let el = event.target;
event.preventDefault()
let el = event.target
for(let i = 0; i < 5; i++) {
if(!el.classList.contains('item')) {
el = el.parentElement;
for (let i = 0; i < 5; i++) {
if (!el.classList.contains('item')) {
el = el.parentElement
}
}
el.style.opacity = 1;
el.style.opacity = 1
}
listing.itemDrop = function (e) {
e.preventDefault();
e.preventDefault()
let el = e.target,
id = e.dataTransfer.getData("id"),
name = e.dataTransfer.getData("name");
id = e.dataTransfer.getData('id'),
name = e.dataTransfer.getData('name')
if(id == "" || name == "") return;
if (id == '' || name == '') return
for(let i = 0; i < 5; i++) {
if(!el.classList.contains('item')) {
el = el.parentElement;
for (let i = 0; i < 5; i++) {
if (!el.classList.contains('item')) {
el = el.parentElement
}
}
if(el.id === id) return;
if (el.id === id) return
let oldLink = document.getElementById(id).dataset.url,
newLink = el.dataset.url + name;
newLink = el.dataset.url + name
webdav.move(oldLink, newLink)
.then(() => listing.reload())
.catch(e => console.log(e));
.catch(e => console.log(e))
}
listing.documentDrop = function (event) {
event.preventDefault();
event.preventDefault()
let dt = event.dataTransfer,
files = dt.files,
el = event.target,
items = document.getElementsByClassName('item');
items = document.getElementsByClassName('item')
for(let i = 0; i < 5; i++) {
if(el != null && !el.classList.contains('item')) {
el = el.parentElement;
for (let i = 0; i < 5; i++) {
if (el != null && !el.classList.contains('item')) {
el = el.parentElement
}
}
if(files.length > 0) {
if(el != null && el.classList.contains('item') && el.dataset.dir == "true") {
listing.handleFiles(files, el.querySelector('.name').innerHTML + "/");
return;
if (files.length > 0) {
if (el != null && el.classList.contains('item') && el.dataset.dir == 'true') {
listing.handleFiles(files, el.querySelector('.name').innerHTML + '/')
return
}
listing.handleFiles(files, "");
listing.handleFiles(files, '')
} else {
Array.from(items).forEach(file => {
file.style.opacity = 1;
});
file.style.opacity = 1
})
}
}
listing.rename = function (event) {
if(!selectedItems.length || selectedItems.length > 1) {
return false;
if (!selectedItems.length || selectedItems.length > 1) {
return false
}
let item = document.getElementById(selectedItems[0]);
let item = document.getElementById(selectedItems[0])
if(item.classList.contains('disabled')) {
return false;
if (item.classList.contains('disabled')) {
return false
}
let link = item.dataset.url,
field = item.querySelector('.name'),
name = field.innerHTML;
name = field.innerHTML
let submit = (event) => {
event.preventDefault();
event.preventDefault()
let newName = event.currentTarget.querySelector('input').value,
newLink = removeLastDirectoryPartOf(link) + "/" + newName;
newLink = removeLastDirectoryPartOf(link) + '/' + newName
closePrompt(event);
buttons.setLoading('rename');
closePrompt(event)
buttons.setLoading('rename')
webdav.move(link, newLink).then(() => {
listing.reload(() => {
newName = btoa(newName);
selectedItems = [newName];
document.getElementById(newName).setAttribute("aria-selected", true);
listing.handleSelectionChange();
});
newName = btoa(newName)
selectedItems = [newName]
document.getElementById(newName).setAttribute('aria-selected', true)
listing.handleSelectionChange()
})
buttons.setDone('rename');
buttons.setDone('rename')
}).catch(error => {
field.innerHTML = name;
buttons.setDone('rename', false);
console.log(error);
});
field.innerHTML = name
buttons.setDone('rename', false)
console.log(error)
})
return false;
return false
}
let clone = document.importNode(templates.question.content, true);
clone.querySelector('h3').innerHTML = 'Rename';
clone.querySelector('input').value = name;
clone.querySelector('.ok').innerHTML = 'Rename';
clone.querySelector('form').addEventListener('submit', submit);
let clone = document.importNode(templates.question.content, true)
clone.querySelector('h3').innerHTML = 'Rename'
clone.querySelector('input').value = name
clone.querySelector('.ok').innerHTML = 'Rename'
clone.querySelector('form').addEventListener('submit', submit)
document.querySelector('body').appendChild(clone)
document.querySelector('.overlay').classList.add('active');
document.querySelector('.prompt').classList.add('active');
document.querySelector('.overlay').classList.add('active')
document.querySelector('.prompt').classList.add('active')
return false;
return false
}
listing.handleFiles = function (files, base) {
buttons.setLoading('upload');
buttons.setLoading('upload')
let promises = [];
let promises = []
for(let file of files) {
promises.push(webdav.put(window.location.pathname + base + file.name, file));
for (let file of files) {
promises.push(webdav.put(window.location.pathname + base + file.name, file))
}
Promise.all(promises)
.then(() => {
listing.reload();
buttons.setDone('upload');
listing.reload()
buttons.setDone('upload')
})
.catch(e => {
console.log(e);
buttons.setDone('upload', false);
console.log(e)
buttons.setDone('upload', false)
})
return false;
return false
}
listing.unselectAll = function () {
let items = document.getElementsByClassName('item');
let items = document.getElementsByClassName('item')
Array.from(items).forEach(link => {
link.setAttribute("aria-selected", false);
});
link.setAttribute('aria-selected', false)
})
selectedItems = [];
selectedItems = []
listing.handleSelectionChange();
return false;
listing.handleSelectionChange()
return false
}
listing.handleSelectionChange = function (event) {
listing.redefineDownloadURLs();
listing.redefineDownloadURLs()
let selectedNumber = selectedItems.length,
fileAction = document.getElementById("file-only");
fileAction = document.getElementById('file-only')
if(selectedNumber) {
fileAction.classList.remove("disabled");
if (selectedNumber) {
fileAction.classList.remove('disabled')
if(selectedNumber > 1) {
buttons.open.classList.add("disabled");
buttons.rename.classList.add("disabled");
if (selectedNumber > 1) {
buttons.open.classList.add('disabled')
buttons.rename.classList.add('disabled')
}
if(selectedNumber == 1) {
if(document.getElementById(selectedItems[0]).dataset.dir == "true") {
buttons.open.classList.add("disabled");
if (selectedNumber == 1) {
if (document.getElementById(selectedItems[0]).dataset.dir == 'true') {
buttons.open.classList.add('disabled')
} else {
buttons.open.classList.remove("disabled");
buttons.open.classList.remove('disabled')
}
buttons.rename.classList.remove("disabled");
buttons.rename.classList.remove('disabled')
}
return false;
return false
}
fileAction.classList.add("disabled");
return false;
fileAction.classList.add('disabled')
return false
}
listing.redefineDownloadURLs = function () {
let files = "";
let files = ''
for(let i = 0; i < selectedItems.length; i++) {
let url = document.getElementById(selectedItems[i]).dataset.url;
files += url.replace(window.location.pathname, "") + ",";
for (let i = 0; i < selectedItems.length; i++) {
let url = document.getElementById(selectedItems[i]).dataset.url
files += url.replace(window.location.pathname, '') + ','
}
files = files.substring(0, files.length - 1);
files = encodeURIComponent(files);
files = files.substring(0, files.length - 1)
files = encodeURIComponent(files)
let links = document.querySelectorAll("#download ul a");
let links = document.querySelectorAll('#download ul a')
Array.from(links).forEach(link => {
link.href = "?download=" + link.dataset.format + "&files=" + files;
});
link.href = '?download=' + link.dataset.format + '&files=' + files
})
}
listing.openItem = function (event) {
window.location = event.currentTarget.dataset.url;
window.location = event.currentTarget.dataset.url
}
listing.selectItem = function (event) {
let el = event.currentTarget;
let el = event.currentTarget
if(selectedItems.length != 0) event.preventDefault();
if(selectedItems.indexOf(el.id) == -1) {
if(!event.ctrlKey && !listing.selectMultiple) listing.unselectAll();
if (selectedItems.length != 0) event.preventDefault()
if (selectedItems.indexOf(el.id) == -1) {
if (!event.ctrlKey && !listing.selectMultiple) listing.unselectAll()
el.setAttribute("aria-selected", true);
selectedItems.push(el.id);
el.setAttribute('aria-selected', true)
selectedItems.push(el.id)
} else {
el.setAttribute("aria-selected", false);
selectedItems.removeElement(el.id);
el.setAttribute('aria-selected', false)
selectedItems.removeElement(el.id)
}
listing.handleSelectionChange();
return false;
listing.handleSelectionChange()
return false
}
listing.newFileButton = function (event) {
event.preventDefault();
event.preventDefault()
let clone = document.importNode(templates.question.content, true);
clone.querySelector('h3').innerHTML = 'New file';
clone.querySelector('p').innerHTML = 'End with a trailing slash to create a dir.';
clone.querySelector('.ok').innerHTML = 'Create';
clone.querySelector('form').addEventListener('submit', listing.newFilePrompt);
let clone = document.importNode(templates.question.content, true)
clone.querySelector('h3').innerHTML = 'New file'
clone.querySelector('p').innerHTML = 'End with a trailing slash to create a dir.'
clone.querySelector('.ok').innerHTML = 'Create'
clone.querySelector('form').addEventListener('submit', listing.newFilePrompt)
document.querySelector('body').appendChild(clone)
document.querySelector('.overlay').classList.add('active');
document.querySelector('.prompt').classList.add('active');
document.querySelector('.overlay').classList.add('active')
document.querySelector('.prompt').classList.add('active')
}
listing.newFilePrompt = function (event) {
event.preventDefault();
buttons.setLoading('new');
event.preventDefault()
buttons.setLoading('new')
let name = event.currentTarget.querySelector('input').value;
let name = event.currentTarget.querySelector('input').value
webdav.new(window.location.pathname + name)
.then(() => {
buttons.setDone('new');
listing.reload();
buttons.setDone('new')
listing.reload()
})
.catch(e => {
console.log(e);
buttons.setDone('new', false);
});
console.log(e)
buttons.setDone('new', false)
})
closePrompt(event);
return false;
closePrompt(event)
return false
}
listing.updateColumns = function (event) {
let columns = Math.floor(document.getElementById('listing').offsetWidth / 300),
items = getCSSRule(['#listing.mosaic .item', '.mosaic#listing .item']);
items = getCSSRule(['#listing.mosaic .item', '.mosaic#listing .item'])
items.style.width = `calc(${100/columns}% - 1em)`;
items.style.width = `calc(${100/columns}% - 1em)`
}
listing.addDoubleTapEvent = function () {
@@ -307,273 +307,272 @@ listing.addDoubleTapEvent = function () {
touches = {
id: '',
count: 0
};
}
Array.from(items).forEach(file => {
file.addEventListener('touchstart', event => {
if(touches.id != file.id) {
touches.id = file.id;
touches.count = 1;
if (touches.id != file.id) {
touches.id = file.id
touches.count = 1
setTimeout(() => {
touches.count = 0;
touches.count = 0
}, 300)
return;
return
}
touches.count++;
touches.count++
if(touches.count > 1) {
window.location = file.dataset.url;
if (touches.count > 1) {
window.location = file.dataset.url
}
});
});
})
})
}
// Keydown events
window.addEventListener('keydown', (event) => {
if(event.keyCode == 27) {
listing.unselectAll();
if (event.keyCode == 27) {
listing.unselectAll()
if(document.querySelectorAll('.prompt').length) {
closePrompt(event);
if (document.querySelectorAll('.prompt').length) {
closePrompt(event)
}
}
if(event.keyCode == 113) {
listing.rename();
if (event.keyCode == 113) {
listing.rename()
}
if(event.ctrlKey || event.metaKey) {
switch(String.fromCharCode(event.which).toLowerCase()) {
case 's':
event.preventDefault();
window.location = "?download=true"
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
event.preventDefault()
window.location = '?download=true'
}
}
});
})
window.addEventListener("resize", () => {
listing.updateColumns();
});
window.addEventListener('resize', () => {
listing.updateColumns()
})
listing.selectMoveFolder = function (event) {
if(event.target.getAttribute("aria-selected") === "true") {
event.target.setAttribute("aria-selected", false);
return;
if (event.target.getAttribute('aria-selected') === 'true') {
event.target.setAttribute('aria-selected', false)
return
} else {
if(document.querySelector(".file-list li[aria-selected=true]")) {
document.querySelector(".file-list li[aria-selected=true]").setAttribute("aria-selected", false);
if (document.querySelector('.file-list li[aria-selected=true]')) {
document.querySelector('.file-list li[aria-selected=true]').setAttribute('aria-selected', false)
}
event.target.setAttribute("aria-selected", true);
return;
event.target.setAttribute('aria-selected', true)
return
}
}
listing.getJSON = function (link) {
return new Promise((resolve, reject) => {
let request = new XMLHttpRequest();
request.open("GET", link);
request.setRequestHeader("Accept", "application/json");
let request = new XMLHttpRequest()
request.open('GET', link)
request.setRequestHeader('Accept', 'application/json')
request.onload = () => {
if(request.status == 200) {
resolve(request.responseText);
if (request.status == 200) {
resolve(request.responseText)
} else {
reject(request.statusText);
reject(request.statusText)
}
}
request.onerror = () => reject(request.statusText);
request.send();
});
request.onerror = () => reject(request.statusText)
request.send()
})
}
listing.moveMakeItem = function (url, name) {
let node = document.createElement("li"),
count = 0;
let node = document.createElement('li'),
count = 0
node.dataset.url = url;
node.innerHTML = name;
node.setAttribute("aria-selected", false);
node.dataset.url = url
node.innerHTML = name
node.setAttribute('aria-selected', false)
node.addEventListener("dblclick", listing.moveDialogNext);
node.addEventListener("click", listing.selectMoveFolder);
node.addEventListener('dblclick', listing.moveDialogNext)
node.addEventListener('click', listing.selectMoveFolder)
node.addEventListener('touchstart', event => {
count++;
count++
setTimeout(() => {
count = 0;
count = 0
}, 300)
if(count > 1) {
listing.moveDialogNext(event);
if (count > 1) {
listing.moveDialogNext(event)
}
});
})
return node;
return node
}
listing.moveDialogNext = function (event) {
let request = new XMLHttpRequest(),
prompt = document.querySelector("form.prompt.active"),
list = prompt.querySelector("div.file-list ul");
prompt = document.querySelector('form.prompt.active'),
list = prompt.querySelector('div.file-list ul')
prompt.addEventListener("submit", listing.moveSelected);
prompt.addEventListener('submit', listing.moveSelected)
listing.getJSON(event.target.dataset.url)
.then((data) => {
let dirs = 0;
let dirs = 0
prompt.querySelector("ul").innerHTML = "";
prompt.querySelector('code').innerHTML = event.target.dataset.url;
prompt.querySelector('ul').innerHTML = ''
prompt.querySelector('code').innerHTML = event.target.dataset.url
if(event.target.dataset.url != baseURL + "/") {
let node = listing.moveMakeItem(removeLastDirectoryPartOf(event.target.dataset.url) + "/", "..")
list.appendChild(node);
if (event.target.dataset.url != baseURL + '/') {
let node = listing.moveMakeItem(removeLastDirectoryPartOf(event.target.dataset.url) + '/', '..')
list.appendChild(node)
}
if(JSON.parse(data) == null) {
prompt.querySelector("p").innerHTML = `There aren't any folders in this directory.`;
return;
if (JSON.parse(data) == null) {
prompt.querySelector('p').innerHTML = `There aren't any folders in this directory.`
return
}
for(let f of JSON.parse(data)) {
if(f.IsDir === true) {
dirs++;
list.appendChild(listing.moveMakeItem(f.URL, f.Name));
for (let f of JSON.parse(data)) {
if (f.IsDir === true) {
dirs++
list.appendChild(listing.moveMakeItem(f.URL, f.Name))
}
}
if(dirs === 0)
prompt.querySelector("p").innerHTML = `There aren't any folders in this directory.`;
if (dirs === 0)
prompt.querySelector('p').innerHTML = `There aren't any folders in this directory.`
})
.catch(e => console.log(e));
.catch(e => console.log(e))
}
listing.moveSelected = function (event) {
event.preventDefault();
event.preventDefault()
let promises = [];
buttons.setLoading("move");
let promises = []
buttons.setLoading('move')
for(let file of selectedItems) {
for (let file of selectedItems) {
let fileElement = document.getElementById(file),
destFolder = event.target.querySelector("p code").innerHTML;
destFolder = event.target.querySelector('p code').innerHTML
if(event.currentTarget.querySelector("li[aria-selected=true]") != null) {
destFolder = event.currentTarget.querySelector("li[aria-selected=true]").dataset.url;
if (event.currentTarget.querySelector('li[aria-selected=true]') != null) {
destFolder = event.currentTarget.querySelector('li[aria-selected=true]').dataset.url
}
let destPath = "/" + destFolder + "/" + fileElement.querySelector(".name").innerHTML;
destPath = destPath.replace('//', '/');
let destPath = '/' + destFolder + '/' + fileElement.querySelector('.name').innerHTML
destPath = destPath.replace('//', '/')
promises.push(webdav.move(fileElement.dataset.url, destPath));
promises.push(webdav.move(fileElement.dataset.url, destPath))
}
Promise.all(promises)
.then(() => {
closePrompt(event);
buttons.setDone("move");
listing.reload();
closePrompt(event)
buttons.setDone('move')
listing.reload()
})
.catch(e => {
console.log(e);
console.log(e)
})
}
listing.moveEvent = function (event) {
if(event.currentTarget.classList.contains("disabled"))
return;
if (event.currentTarget.classList.contains('disabled'))
return
listing.getJSON(window.location.pathname)
.then((data) => {
let prompt = document.importNode(templates.move.content, true),
list = prompt.querySelector("div.file-list ul"),
dirs = 0;
list = prompt.querySelector('div.file-list ul'),
dirs = 0
prompt.querySelector("form").addEventListener("submit", listing.moveSelected);
prompt.querySelector('code').innerHTML = window.location.pathname;
prompt.querySelector('form').addEventListener('submit', listing.moveSelected)
prompt.querySelector('code').innerHTML = window.location.pathname
if(window.location.pathname !== baseURL + "/") {
list.appendChild(listing.moveMakeItem(removeLastDirectoryPartOf(window.location.pathname) + "/", ".."));
if (window.location.pathname !== baseURL + '/') {
list.appendChild(listing.moveMakeItem(removeLastDirectoryPartOf(window.location.pathname) + '/', '..'))
}
for(let f of JSON.parse(data)) {
if(f.IsDir === true) {
dirs++;
list.appendChild(listing.moveMakeItem(f.URL, f.Name));
for (let f of JSON.parse(data)) {
if (f.IsDir === true) {
dirs++
list.appendChild(listing.moveMakeItem(f.URL, f.Name))
}
}
if(dirs === 0) {
prompt.querySelector("p").innerHTML = `There aren't any folders in this directory.`;
if (dirs === 0) {
prompt.querySelector('p').innerHTML = `There aren't any folders in this directory.`
}
document.body.appendChild(prompt);
document.querySelector(".overlay").classList.add("active");
document.querySelector(".prompt").classList.add("active");
document.body.appendChild(prompt)
document.querySelector('.overlay').classList.add('active')
document.querySelector('.prompt').classList.add('active')
})
.catch(e => console.log(e));
.catch(e => console.log(e))
}
document.addEventListener('DOMContentLoaded', event => {
listing.updateColumns();
listing.addDoubleTapEvent();
listing.updateColumns()
listing.addDoubleTapEvent()
buttons.rename = document.getElementById("rename");
buttons.upload = document.getElementById("upload");
buttons.new = document.getElementById('new');
buttons.download = document.getElementById('download');
buttons.move = document.getElementById("move");
buttons.rename = document.getElementById('rename')
buttons.upload = document.getElementById('upload')
buttons.new = document.getElementById('new')
buttons.download = document.getElementById('download')
buttons.move = document.getElementById('move')
buttons.move.addEventListener("click", listing.moveEvent);
buttons.move.addEventListener('click', listing.moveEvent)
document.getElementById('multiple-selection-activate').addEventListener('click', event => {
listing.selectMultiple = true;
clickOverlay.click();
listing.selectMultiple = true
clickOverlay.click()
document.getElementById('multiple-selection').classList.add('active');
document.querySelector('body').style.paddingBottom = "4em";
document.getElementById('multiple-selection').classList.add('active')
document.querySelector('body').style.paddingBottom = '4em'
})
document.getElementById('multiple-selection-cancel').addEventListener('click', event => {
listing.selectMultiple = false;
listing.selectMultiple = false
document.querySelector('body').style.paddingBottom = "0";
document.getElementById('multiple-selection').classList.remove('active');
document.querySelector('body').style.paddingBottom = '0'
document.getElementById('multiple-selection').classList.remove('active')
})
if(user.AllowEdit) {
buttons.rename.addEventListener("click", listing.rename);
if (user.AllowEdit) {
buttons.rename.addEventListener('click', listing.rename)
}
let items = document.getElementsByClassName('item');
let items = document.getElementsByClassName('item')
if(user.AllowNew) {
buttons.upload.addEventListener("click", (event) => {
document.getElementById("upload-input").click();
});
if (user.AllowNew) {
buttons.upload.addEventListener('click', (event) => {
document.getElementById('upload-input').click()
})
buttons.new.addEventListener('click', listing.newFileButton);
buttons.new.addEventListener('click', listing.newFileButton)
// Drag and Drop
document.addEventListener("dragover", function (event) {
event.preventDefault();
}, false);
document.addEventListener('dragover', function (event) {
event.preventDefault()
}, false)
document.addEventListener("dragenter", (event) => {
document.addEventListener('dragenter', (event) => {
Array.from(items).forEach(file => {
file.style.opacity = 0.5;
});
}, false);
file.style.opacity = 0.5
})
}, false)
document.addEventListener("dragend", (event) => {
document.addEventListener('dragend', (event) => {
Array.from(items).forEach(file => {
file.style.opacity = 1;
});
}, false);
file.style.opacity = 1
})
}, false)
document.addEventListener("drop", listing.documentDrop, false);
document.addEventListener('drop', listing.documentDrop, false)
}
});
})