Updated message timeouts
This commit is contained in:
parent
94017f61ad
commit
022046cd3f
|
@ -1,204 +1,253 @@
|
|||
const reloadDirectory = () => {
|
||||
const target = document.getElementById('refresh-btn');
|
||||
const hash = target.getAttribute("hash");
|
||||
listFilesAjax(hash);
|
||||
}
|
||||
|
||||
const goUpADirectory = () => {
|
||||
const target = document.getElementById('back-btn')
|
||||
const hash = target.getAttribute("hash");
|
||||
listFilesAjax(hash);
|
||||
}
|
||||
|
||||
const scrollFilesToTop = () => {
|
||||
const target = document.getElementById('files');
|
||||
target.scrollIntoView();
|
||||
}
|
||||
const ipRegexWithPort = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]\:?)$/;
|
||||
const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
||||
|
||||
|
||||
const closeFile = () => {
|
||||
const video = document.getElementById("video");
|
||||
let title = document.getElementById("selectedFile");
|
||||
|
||||
document.getElementById("image-viewer").style.display = "none";
|
||||
document.getElementById("text-viewer").style.display = "none";
|
||||
document.getElementById("pdf-viewer").style.display = "none";
|
||||
document.getElementById("video-controls").style.display = "none";
|
||||
|
||||
title.innerText = "";
|
||||
video.style.display = "none";
|
||||
video.style.cursor = '';
|
||||
video.pause();
|
||||
}
|
||||
|
||||
const showFile = async (title, hash, extension, type) => {
|
||||
document.getElementById("image-viewer").style.display = "none";
|
||||
document.getElementById("text-viewer").style.display = "none";
|
||||
document.getElementById("pdf-viewer").style.display = "none";
|
||||
document.getElementById("video").style.display = "none";
|
||||
document.getElementById("video-controls").style.display = "none";
|
||||
|
||||
let titleElm = document.getElementById("selectedFile");
|
||||
titleElm.innerText = title;
|
||||
|
||||
if (type === "video") {
|
||||
setupVideo(hash, extension);
|
||||
}
|
||||
if (type === "file") {
|
||||
setupFile(hash, extension);
|
||||
}
|
||||
}
|
||||
|
||||
const setupVideo = async (hash, extension) => {
|
||||
let video = document.getElementById("video");
|
||||
let controls = document.getElementById("video-controls");
|
||||
video.poster = "static/imgs/icons/loading.gif";
|
||||
video.style.display = "";
|
||||
video.src = "#"
|
||||
video_path = "api/file-manager-action/files/" + hash;
|
||||
|
||||
try {
|
||||
if ((/\.(avi|mkv|wmv|flv|f4v|mov|m4v|mpg|mpeg|mp4|webm|mp3|flac|ogg)$/i).test(extension)) {
|
||||
if ((/\.(avi|mkv|wmv|flv|f4v)$/i).test(extension)) {
|
||||
data = await fetchData( "api/file-manager-action/remux/" + hash );
|
||||
if ( data.hasOwnProperty('path') ) {
|
||||
video_path = data.path;
|
||||
} else {
|
||||
displayMessage(data.message.text, data.message.type);
|
||||
return ;
|
||||
}
|
||||
} else if ((/\.(flv|mov|m4v|mpg|mpeg)$/i).test(extension)) {
|
||||
$('#file-view-modal').modal({"focus": false, "show": false});
|
||||
openWithLocalProgram(hash, extension);
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
$('#file-view-modal').modal({"focus": true, "show": true});
|
||||
controls.style.display = "none";
|
||||
video.src = video_path;
|
||||
} catch (e) {
|
||||
video.style.display = "none";
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
|
||||
const setupFile = async (hash, extension) => {
|
||||
let viewer = null;
|
||||
let type = "local";
|
||||
|
||||
if ((/\.(png|jpg|jpeg|gif|ico)$/i).test(extension)) {
|
||||
type = "image";
|
||||
viewer = document.getElementById("image-viewer");
|
||||
}
|
||||
if ((/\.(txt|text|sh|cfg|conf)$/i).test(extension)) {
|
||||
type = "text";
|
||||
viewer = document.getElementById("text-viewer");
|
||||
}
|
||||
if ((/\.(mp3|ogg|flac)$/i).test(extension)) {
|
||||
type = "music";
|
||||
viewer = document.getElementById("video");
|
||||
}
|
||||
if ((/\.(pdf)$/i).test(extension)) {
|
||||
type = "pdf";
|
||||
viewer = document.getElementById("pdf-viewer");
|
||||
}
|
||||
|
||||
if (type !== "text" && type !== "local" ) {
|
||||
$('#file-view-modal').modal({"focus": true, "show": true});
|
||||
let response = await fetch("api/file-manager-action/files/" + hash);
|
||||
let src_obj = URL.createObjectURL(await response.blob()); // IE10+
|
||||
viewer.src = src_obj;
|
||||
}
|
||||
|
||||
if (type == "text") {
|
||||
let response = await fetch("api/file-manager-action/files/" + hash);
|
||||
let textData = await response.text(); // IE10+
|
||||
viewer.innerText = textData;
|
||||
}
|
||||
|
||||
if (type !== "local") {
|
||||
viewer.style.display = "";
|
||||
$('#file-view-modal').modal({"focus": true, "show": true});
|
||||
}
|
||||
|
||||
if (type == "local") {
|
||||
openWithLocalProgram(hash);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const openWithLocalProgram = async (hash, extension = "") => {
|
||||
const url = "api/file-manager-action/run-locally/" + hash;
|
||||
const data = await fetchData(url);
|
||||
let message = data.message;
|
||||
displayMessage(message.text, message.type);
|
||||
}
|
||||
|
||||
|
||||
const searchPage = () => {
|
||||
const query = document.getElementById('search-files-field').value.toLowerCase();
|
||||
const list = document.getElementById("files").querySelectorAll("li[title]");
|
||||
const size = list.length;
|
||||
// Background Functions
|
||||
const getBackgrounds = async () => {
|
||||
const ulElm = document.getElementById('backgroundSelection');
|
||||
const data = await fetchData( formatURL("backgrounds") );
|
||||
|
||||
size = data.backgrounds.length - 1;
|
||||
backgrounds = data.backgrounds;
|
||||
for (var i = 0; i < size; i++) {
|
||||
if (!list[i].title.toLowerCase().includes(query)) {
|
||||
list[i].style.display = "none";
|
||||
} else {
|
||||
list[i].style.display = "";
|
||||
}
|
||||
generateBgElm(ulElm, backgrounds[i]);
|
||||
}
|
||||
}
|
||||
|
||||
const clearSearch = () => {
|
||||
const list = document.getElementById("files").querySelectorAll("li[title]");
|
||||
const size = list.length;
|
||||
const generateBgElm = (ulElm, background) => {
|
||||
const liElm = document.createElement("LI");
|
||||
const imgElm = document.createElement("IMG");
|
||||
const imgPath = formatURL("static/imgs/backgrounds/" + background);
|
||||
|
||||
document.getElementById('search-files-field').value = "";
|
||||
for (var i = 0; i < size; i++) {
|
||||
list[i].style.display = "";
|
||||
}
|
||||
imgElm.src = imgPath;
|
||||
imgElm.className = "bgimgs";
|
||||
|
||||
liElm.appendChild(imgElm);
|
||||
ulElm.appendChild(liElm);
|
||||
}
|
||||
|
||||
const loadBackground = () => {
|
||||
let bgElm = document.getElementById("bg");
|
||||
let val = getCookie('bgSlug');
|
||||
|
||||
const updateBackground = (srcLink, isvideo = true) => {
|
||||
try {
|
||||
let elm = document.getElementById("bg");
|
||||
if (isvideo) {
|
||||
if (elm.getAttribute('src') === "") {
|
||||
elm.src = srcLink;
|
||||
}
|
||||
} else {
|
||||
elm.src = "";
|
||||
elm.setAttribute("poster", srcLink);
|
||||
}
|
||||
} catch (e) { }
|
||||
}
|
||||
|
||||
|
||||
const manageFavorites = (elm) => {
|
||||
const classType = "btn-info";
|
||||
const hasClass = elm.classList.contains(classType);
|
||||
if (hasClass) {
|
||||
elm.classList.remove(classType);
|
||||
action = "delete";
|
||||
if (val == "" || val == undefined) {
|
||||
let path = formatURL('static/imgs/backgrounds/background.png');
|
||||
setCookie('bgSlug', path);
|
||||
bgElm.src = path;
|
||||
} else {
|
||||
elm.classList.add(classType);
|
||||
action = "add";
|
||||
bgElm.src = val;
|
||||
}
|
||||
}
|
||||
|
||||
const setBackgroundCookie = (path) => {
|
||||
document.getElementById("bg").src = path;
|
||||
setCookie('bgSlug', path);
|
||||
}
|
||||
|
||||
const clearBackgroundList = () => {
|
||||
let bgList = document.getElementById("backgroundSelection");
|
||||
clearChildNodes(bgList);
|
||||
}
|
||||
|
||||
// Fave Modal and List Functions
|
||||
|
||||
const loadFavorites = async () => {
|
||||
const isLoggedIn = document.getElementsByClassName("btn btn-success")[0].innerText.includes("Login");
|
||||
if (!isLoggedIn) {
|
||||
const data = await fetchData( formatURL("favorites") );
|
||||
const ulElm = document.getElementById('favoritesSelection');
|
||||
|
||||
size = data.faves.length;
|
||||
faves = data.faves;
|
||||
for (var i = 0; i < size; i++) {
|
||||
generateFaveLinkElm(ulElm, faves[i][0], faves[i][1], faves[i][2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setFaveLinkIco = (link) => {
|
||||
let iconElm = document.getElementById("faveLinkImage");
|
||||
let gIcoElm = document.getElementsByName('faveIconGoo')[0];
|
||||
let iIcoElm = document.getElementsByName('faveIconIco')[0];
|
||||
let pIcoElm = document.getElementsByName('faveIconPng')[0];
|
||||
let jIcoelm = document.getElementsByName('faveIconJpg')[0];
|
||||
let gfIcoElm = document.getElementsByName('faveIconGif')[0];
|
||||
|
||||
let gIcon = 'http://www.google.com/s2/favicons?domain=';
|
||||
let dArry = link.split('/');
|
||||
let iIcon = "";
|
||||
let pIcon = "";
|
||||
let jIcon = "";
|
||||
let gfIcon = "";
|
||||
|
||||
// Check if we can see domain...
|
||||
if (dArry.length >= 3) {
|
||||
let domain = dArry[2];
|
||||
gIcon = gIcon += domain;
|
||||
iIcon = "//" + domain + "/favicon.ico";
|
||||
pIcon = "//" + domain + "/favicon.png";
|
||||
jIcon = "//" + domain + "/favicon.jpg";
|
||||
gfIcon = "//" + domain + "/favicon.gif";
|
||||
} else {
|
||||
// Check if IP
|
||||
if ( ipRegex.test(link) || ipRegexWithPort.test(link) ) {
|
||||
iIcon = link + "/favicon.ico";
|
||||
pIcon = link + "/favicon.png";
|
||||
jIcon = link + "/favicon.jpg";
|
||||
gfIcon = link + "/favicon.gif";
|
||||
} else { // set generic fave icon.
|
||||
clearFaveIcons();
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
manageFavoritesAjax(action);
|
||||
iconElm.src = iIcon;
|
||||
gIcoElm.src = gIcon;
|
||||
iIcoElm.src = iIcon;
|
||||
pIcoElm.src = pIcon;
|
||||
jIcoelm.src = jIcon;
|
||||
gfIcoElm.src = gfIcon;
|
||||
}
|
||||
|
||||
|
||||
const loadFavorite = (id) => {
|
||||
loadFavoriteLink(id);
|
||||
document.getElementById("favorites-modal")
|
||||
.getElementsByClassName("modal-footer")[0]
|
||||
.children[0].click()
|
||||
const clearFaveIcons = () => {
|
||||
const domain = "/static/imgs/icons/link-icon.png";
|
||||
document.getElementById("faveLinkImage").src = domain;
|
||||
document.getElementsByName('faveIconGoo')[0].src = domain;
|
||||
document.getElementsByName('faveIconIco')[0].src = domain;
|
||||
document.getElementsByName('faveIconPng')[0].src = domain;
|
||||
document.getElementsByName('faveIconJpg')[0].src = domain;
|
||||
document.getElementsByName('faveIconGif')[0].src = domain;
|
||||
document.getElementsByName("customFaveIconImg")[0].src = domain;
|
||||
}
|
||||
|
||||
const faveLinkFieldManager = (eve) => {
|
||||
const link = eve.target.value.trim();
|
||||
const pattern = /(https|http)/ig;
|
||||
const result = pattern.test(link);
|
||||
|
||||
if (result === true) {
|
||||
setFaveLinkIco(link);
|
||||
}
|
||||
}
|
||||
|
||||
const saveFaveLink = () => {
|
||||
const title = document.getElementById("faveTitleField").value.trim()
|
||||
const link = document.getElementById("faveLinkField").value.trim()
|
||||
const icon = document.getElementById("faveLinkImage").src;
|
||||
addFaveLinkAjax(title, icon, link);
|
||||
}
|
||||
|
||||
const generateFaveLinkElm = async (ulElm, titleTxt, pathTxt, aTxt) => {
|
||||
const liElm = document.createElement("LI");
|
||||
const aElm = document.createElement("A");
|
||||
const imgElm = document.createElement("IMG");
|
||||
const h3Elm = document.createElement("H3");
|
||||
const title = document.createTextNode(titleTxt);
|
||||
const imgPath = pathTxt;
|
||||
const aLink = aTxt;
|
||||
|
||||
aElm.href = aLink;
|
||||
imgElm.title = aLink;
|
||||
imgElm.src = imgPath;
|
||||
imgElm.className = "faveimgs";
|
||||
|
||||
h3Elm.appendChild(title)
|
||||
aElm.appendChild(imgElm);
|
||||
aElm.appendChild(h3Elm);
|
||||
liElm.appendChild(aElm);
|
||||
ulElm.appendChild(liElm);
|
||||
}
|
||||
|
||||
const manageIcoCheckBoxs = (target = null) => {
|
||||
if (target == null)
|
||||
return ;
|
||||
|
||||
let ulElm = document.getElementById('faveIcoUlList');
|
||||
let list = ulElm.getElementsByTagName("INPUT");
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
item = list[i];
|
||||
if (target.id != item.id) { // unceck all others
|
||||
item.checked = false;
|
||||
} else { // Act on target but insure one is checked at all times...
|
||||
if (!target.checked)
|
||||
target.checked = true;
|
||||
const src = target.nextElementSibling.nextElementSibling.src;
|
||||
document.getElementById("faveLinkImage").src = src;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const customIconFieldManager = (eve) => {
|
||||
let isChecked = document.getElementById('customIconChkBx').checked;
|
||||
if (isChecked) {
|
||||
let target = eve.target;
|
||||
const src = target.value.trim();
|
||||
document.getElementById("faveLinkImage").src = src;
|
||||
document.getElementsByName("customFaveIconImg")[0].src = src;
|
||||
}
|
||||
}
|
||||
|
||||
const generateBackgroundDirectoryElm = (bgDirsList, name, path) => {
|
||||
let pthTxt = document.createTextNode(name);
|
||||
let liElm = document.createElement('LI');
|
||||
let spnElm = document.createElement('SPAN');
|
||||
let spnElm2 = document.createElement('SPAN');
|
||||
|
||||
liElm.className = "list-group-item";
|
||||
liElm.setAttribute('title', path);
|
||||
liElm.setAttribute('class', "list-group-item");
|
||||
spnElm2.setAttribute('class', "badge badge-danger label-as-badge");
|
||||
spnElm2.setAttribute('value', path);
|
||||
spnElm2.addEventListener("click", eve => {
|
||||
removeBgFolder(eve.target);
|
||||
});
|
||||
|
||||
spnElm2.innerText = "X";
|
||||
spnElm.appendChild(pthTxt);
|
||||
liElm.appendChild(spnElm);
|
||||
liElm.appendChild(spnElm2);
|
||||
bgDirsList.appendChild(liElm);
|
||||
}
|
||||
|
||||
const getHackerNews = async () => {
|
||||
const response = await fetch("https://hacker-news.firebaseio.com/v0/beststories.json");
|
||||
const ids = await response.json();
|
||||
|
||||
let table = document.getElementById("hackerNewsTable");
|
||||
let arrySize = ids.length;
|
||||
let j = 1;
|
||||
|
||||
for (var i = 0; i < arrySize; i++) {
|
||||
let artJSON = "https://hacker-news.firebaseio.com/v0/item/" + ids[i] + ".json";
|
||||
generateNewsElm(table, artJSON, j);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
const generateNewsElm = async (table, artJSON, j) => {
|
||||
const response = await fetch(artJSON);
|
||||
const article = await response.json();
|
||||
|
||||
let trItem = document.createElement("TR");
|
||||
let tdItemNumber = document.createElement("TD");
|
||||
let tdItemLink = document.createElement("TD");
|
||||
let anchorItem = document.createElement("A");
|
||||
let numberText = document.createTextNode(j);
|
||||
let titleText = document.createTextNode(article["title"]);
|
||||
|
||||
anchorItem.href = article["url"];
|
||||
anchorItem.target = "_blank";
|
||||
|
||||
anchorItem.appendChild(titleText);
|
||||
tdItemNumber.appendChild(numberText);
|
||||
tdItemLink.appendChild(anchorItem);
|
||||
|
||||
trItem.setAttribute("scope", "row");
|
||||
trItem.appendChild(tdItemNumber);
|
||||
trItem.appendChild(tdItemLink);
|
||||
table.appendChild(trItem);
|
||||
}
|
||||
|
||||
// Message handler
|
||||
const displayMessage = (message, type, timeout, msgWindow = "page-alert-zone") => {
|
||||
|
@ -234,35 +283,3 @@ const clearChildNodes = (parent) => {
|
|||
parent.removeChild(parent.firstChild);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Cache Buster
|
||||
const clearCache = () => {
|
||||
const rep = /.*\?.*/;
|
||||
let links = document.getElementsByTagName('link'),
|
||||
scripts = document.getElementsByTagName('script'),
|
||||
video = document.getElementsByTagName('video'),
|
||||
process_scripts = false;
|
||||
|
||||
for (let i = 0; i < links.length; i++) {
|
||||
let link = links[i],
|
||||
href = link.href;
|
||||
if(rep.test(href)) {
|
||||
link.href = href+'&'+Date.now();
|
||||
} else {
|
||||
link.href = href+'?'+Date.now();
|
||||
}
|
||||
|
||||
}
|
||||
if(process_scripts) {
|
||||
for (let i = 0; i < scripts.length; i++) {
|
||||
let script = scripts[i],
|
||||
src = script.src;
|
||||
if(rep.test(src)) {
|
||||
script.src = src+'&'+Date.now();
|
||||
} else {
|
||||
script.src = src+'?'+Date.now();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue