X-Git-Url: https://git.p6c8.net/jirafeau/mojo42.git/blobdiff_plain/fd69ffa2b6106b20378a22917ea8f63c8091859d..71f70e201e53baf6936fad1dc00b87c2c50e8c3d:/lib/functions_v2.js diff --git a/lib/functions_v2.js b/lib/functions_v2.js deleted file mode 100644 index 1f2eee6..0000000 --- a/lib/functions_v2.js +++ /dev/null @@ -1,534 +0,0 @@ -/* - * Jirafeau, your web file repository - * Copyright (C) 2015 Jerome Jutteau - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -function show_link (url, reference, delete_code, crypt_key, date) -{ - // Download page if element exists - var download_link = url + 'f.php?h=' + reference; - var download_link_href = url + 'f.php?h=' + reference; - if (crypt_key.length > 0) - { - download_link += '&k=' + crypt_key; - download_link_href += '&k=' + crypt_key; - } - if (!!document.getElementById('upload_finished_download_page')) - { - document.getElementById('upload_link').innerHTML = download_link; - document.getElementById('upload_link').href = download_link_href; - } - - // Is the preview allowed ? - if (!!document.getElementById('preview_link')) - { - document.getElementById('upload_finished_preview').style.display = 'none'; - var preview_link = url + 'f.php?h=' + reference + '&p=1'; - var preview_link_href = url + 'f.php?h=' + reference + '&p=1'; - if (crypt_key.length > 0) - { - preview_link += '&k=' + crypt_key; - preview_link_href += '&k=' + crypt_key; - } - - // Test if content can be previewed - type = document.getElementById('file_select').files[0].type; - if (type.indexOf("image") > -1 || - type.indexOf("audio") > -1 || - type.indexOf("text") > -1 || - type.indexOf("video") > -1) - { - document.getElementById('preview_link').innerHTML = preview_link; - document.getElementById('preview_link').href = preview_link_href; - document.getElementById('upload_finished_preview').style.display = ''; - } - } - - // Only show link to password page if password is set - document.getElementById('upload_password_page').style.display = 'none'; - if (document.getElementById('input_key').value.length > 0) - { - if (!!document.getElementById('upload_finished_download_page')) - document.getElementById('upload_finished_download_page').style.display = 'none'; - document.getElementById('upload_password_page').style.display = ''; - if (!!document.getElementById('upload_finished_preview')) - document.getElementById('upload_finished_preview').style.display = 'none'; - document.getElementById('upload_direct_download').style.display = 'none'; - - document.getElementById('password_link').innerHTML = download_link; - document.getElementById('password_link').href = download_link_href; - } - // Direct download link - else - { - var direct_download_link = url + 'f.php?h=' + reference + '&d=1'; - var direct_download_link_href = url + 'f.php?h=' + reference + '&d=1'; - if (crypt_key.length > 0) - { - direct_download_link += '&k=' + crypt_key; - direct_download_link_href += '&k=' + crypt_key; - } - document.getElementById('direct_link').innerHTML = direct_download_link; - document.getElementById('direct_link').href = direct_download_link_href; - } - - // Delete link - var delete_link = url + 'f.php?h=' + reference + '&d=' + delete_code; - var delete_link_href = url + 'f.php?h=' + reference + '&d=' + delete_code; - document.getElementById('delete_link').innerHTML = delete_link; - document.getElementById('delete_link').href = delete_link_href; - - if (date) - { - document.getElementById('date').innerHTML = date; - document.getElementById('validity').style.display = ''; - } - else - document.getElementById('validity').style.display = 'none'; - - document.getElementById('uploading').style.display = 'none'; - document.getElementById('upload').style.display = 'none'; - document.getElementById('upload_finished').style.display = ''; - document.title = 'Jirafeau - 100%'; -} - -function show_upload_progression (percentage, speed, time) -{ - document.getElementById('uploaded_percentage').innerHTML = percentage; - document.getElementById('uploaded_speed').innerHTML = speed; - document.getElementById('uploaded_time').innerHTML = time; - document.title = 'Jirafeau - ' + percentage; -} - -function hide_upload_progression () -{ - document.getElementById('uploaded_percentage').style.display = 'none'; - document.getElementById('uploaded_speed').style.display = 'none'; - document.getElementById('uploaded_time').style.display = 'none'; - document.title = 'Jirafeau'; -} - -function upload_progress (e) -{ - if (!e.lengthComputable) - return; - - // Init time estimation if needed - if (upload_time_estimation_total_size == 0) - upload_time_estimation_total_size = e.total; - - // Compute percentage - var p = Math.round (e.loaded * 100 / e.total); - var p_str = ' '; - if (p != 100) - p_str = p.toString() + '%'; - // Update estimation speed - upload_time_estimation_add(e.loaded); - // Get speed string - var speed_str = upload_time_estimation_speed_string(); - // Get remaining time string - var time_str = upload_time_estimation_time_string(); - - show_upload_progression (p_str, speed_str, time_str); -} - -function control_selected_file_size(max_size, error_str) -{ - f_size = document.getElementById('file_select').files[0].size; - if (max_size > 0 && f_size > max_size * 1024 * 1024) - { - pop_failure(error_str); - document.getElementById('send').style.display = 'none'; - } - else - { - document.getElementById('options').style.display = ''; - document.getElementById('send').style.display = ''; - document.getElementById('error_pop').style.display = 'none'; - } -} - -function pop_failure (e) -{ - var text = "An error occured"; - if (typeof e !== 'undefined') - text = e; - text = "

" + text + "

"; - document.getElementById('error_pop').innerHTML = e; - - document.getElementById('uploading').style.display = 'none'; - document.getElementById('error_pop').style.display = ''; - document.getElementById('upload').style.display = ''; - document.getElementById('send').style.display = ''; -} - -function classic_upload (url, file, time, password, one_time, upload_password) -{ - // Delay time estimation init as we can't have file size - upload_time_estimation_init(0); - - var req = new XMLHttpRequest (); - req.upload.addEventListener ("progress", upload_progress, false); - req.addEventListener ("error", pop_failure, false); - req.addEventListener ("abort", pop_failure, false); - req.onreadystatechange = function () - { - if (req.readyState == 4 && req.status == 200) - { - var res = req.responseText; - if (res == "Error") - { - pop_failure (); - return; - } - res = res.split ("\n"); - if (time != 'none') - { - var d = new Date(); - if (time == 'minute') - d.setSeconds (d.getSeconds() + 60); - else if (time == 'hour') - d.setSeconds (d.getSeconds() + 3600); - else if (time == 'day') - d.setSeconds (d.getSeconds() + 86400); - else if (time == 'week') - d.setSeconds (d.getSeconds() + 604800); - else if (time == 'month') - d.setSeconds (d.getSeconds() + 2419200); - else if (time == 'year') - d.setSeconds (d.getSeconds() + 29030400); - else - return; - show_link (url, res[0], res[1], res[2], d.toString()); - } - else - show_link (url, res[0], res[1], res[2]); - } - } - req.open ("POST", url + 'script.php' , true); - - var form = new FormData(); - form.append ("file", file); - if (time) - form.append ("time", time); - if (password) - form.append ("key", password); - if (one_time) - form.append ("one_time_download", '1'); - if (upload_password.length > 0) - form.append ("upload_password", upload_password); - - req.send (form); -} - -function check_html5_file_api () -{ - if (window.File && window.FileReader && window.FileList && window.Blob) - return true; - return false; -} - -var async_global_transfered = 0; -var async_global_url = ''; -var async_global_file; -var async_global_ref = ''; -var async_global_max_size = 0; -var async_global_time; -var async_global_transfering = 0; - -function async_upload_start (url, max_size, file, time, password, one_time, upload_password) -{ - async_global_transfered = 0; - async_global_url = url; - async_global_file = file; - async_global_max_size = max_size; - async_global_time = time; - - var req = new XMLHttpRequest (); - req.addEventListener ("error", pop_failure, false); - req.addEventListener ("abort", pop_failure, false); - req.onreadystatechange = function () - { - if (req.readyState == 4 && req.status == 200) - { - var res = req.responseText; - if (res == "Error") - { - pop_failure (); - return; - } - res = res.split ("\n"); - async_global_ref = res[0]; - var code = res[1]; - async_upload_push (code); - } - } - req.open ("POST", async_global_url + 'script.php?init_async' , true); - - var form = new FormData(); - form.append ("filename", async_global_file.name); - form.append ("type", async_global_file.type); - if (time) - form.append ("time", time); - if (password) - form.append ("key", password); - if (one_time) - form.append ("one_time_download", '1'); - if (upload_password.length > 0) - form.append ("upload_password", upload_password); - - // Start time estimation - upload_time_estimation_init(async_global_file.size); - - req.send (form); -} - -function async_upload_progress (e) -{ - if (!e.lengthComputable && async_global_file.size != 0) - return; - - // Compute percentage - var p = Math.round ((e.loaded + async_global_transfered) * 100 / (async_global_file.size)); - var p_str = ' '; - if (p != 100) - p_str = p.toString() + '%'; - // Update estimation speed - upload_time_estimation_add(e.loaded + async_global_transfered); - // Get speed string - var speed_str = upload_time_estimation_speed_string(); - // Get remaining time string - var time_str = upload_time_estimation_time_string(); - - show_upload_progression (p_str, speed_str, time_str); -} - -function async_upload_push (code) -{ - if (async_global_transfered == async_global_file.size) - { - hide_upload_progression (); - async_upload_end (code); - return; - } - var req = new XMLHttpRequest (); - req.upload.addEventListener ("progress", async_upload_progress, false); - req.addEventListener ("error", pop_failure, false); - req.addEventListener ("abort", pop_failure, false); - req.onreadystatechange = function () - { - if (req.readyState == 4 && req.status == 200) - { - var res = req.responseText; - if (res == "Error") - { - pop_failure (); - return; - } - res = res.split ("\n"); - var code = res[0] - async_global_transfered = async_global_transfering; - async_upload_push (code); - } - } - req.open ("POST", async_global_url + 'script.php?push_async' , true); - - var chunk_size = parseInt (async_global_max_size * 0.50); - var start = async_global_transfered; - var end = start + chunk_size; - if (end >= async_global_file.size) - end = async_global_file.size; - var blob = async_global_file.slice (start, end); - async_global_transfering = end; - - var form = new FormData(); - form.append ("ref", async_global_ref); - form.append ("data", blob); - form.append ("code", code); - req.send (form); -} - -function async_upload_end (code) -{ - var req = new XMLHttpRequest (); - req.addEventListener ("error", pop_failure, false); - req.addEventListener ("abort", pop_failure, false); - req.onreadystatechange = function () - { - if (req.readyState == 4 && req.status == 200) - { - var res = req.responseText; - if (res == "Error") - { - pop_failure (); - return; - } - res = res.split ("\n"); - if (async_global_time != 'none') - { - var d = new Date(); - if (async_global_time == 'minute') - d.setSeconds (d.getSeconds() + 60); - else if (async_global_time == 'hour') - d.setSeconds (d.getSeconds() + 3600); - else if (async_global_time == 'day') - d.setSeconds (d.getSeconds() + 86400); - else if (async_global_time == 'week') - d.setSeconds (d.getSeconds() + 604800); - else if (async_global_time == 'month') - d.setSeconds (d.getSeconds() + 2419200); - else if (async_global_time == 'year') - d.setSeconds (d.getSeconds() + 29030400); - else - return; - show_link (async_global_url, res[0], res[1], res[2], d.toString()); - } - else - show_link (async_global_url, res[0], res[1], res[2]); - } - } - req.open ("POST", async_global_url + 'script.php?end_async' , true); - - var form = new FormData(); - form.append ("ref", async_global_ref); - form.append ("code", code); - req.send (form); -} - -function upload (url, max_size) -{ - if (check_html5_file_api () - && document.getElementById('file_select').files[0].size >= max_size) - { - async_upload_start (url, - max_size, - document.getElementById('file_select').files[0], - document.getElementById('select_time').value, - document.getElementById('input_key').value, - document.getElementById('one_time_download').checked, - document.getElementById('upload_password').value - ); - } - else - { - classic_upload (url, - document.getElementById('file_select').files[0], - document.getElementById('select_time').value, - document.getElementById('input_key').value, - document.getElementById('one_time_download').checked, - document.getElementById('upload_password').value - ); - } -} - -var upload_time_estimation_total_size = 42; -var upload_time_estimation_transfered_size = 42; -var upload_time_estimation_transfered_date = 42; -var upload_time_estimation_moving_average_speed = 42; - -function upload_time_estimation_init(total_size) -{ - upload_time_estimation_total_size = total_size; - upload_time_estimation_transfered_size = 0; - upload_time_estimation_moving_average_speed = 0; - var d = new Date(); - upload_time_estimation_transfered_date = d.getMilliseconds(); -} - -function upload_time_estimation_add(total_transfered_size) -{ - // Let's compute the current speed - var d = new Date(); - var speed = upload_time_estimation_moving_average_speed; - if (d.getMilliseconds() - upload_time_estimation_transfered_date != 0) - speed = (total_transfered_size - upload_time_estimation_transfered_size) - / (d.getMilliseconds() - upload_time_estimation_transfered_date); - // Let's compute moving average speed on 30 values - var m = (upload_time_estimation_moving_average_speed * 29 + speed) / 30; - // Update global values - upload_time_estimation_transfered_size = total_transfered_size; - upload_time_estimation_transfered_date = d.getMilliseconds(); - upload_time_estimation_moving_average_speed = m; -} - -function upload_time_estimation_speed_string() -{ - // speed ms -> s - var s = upload_time_estimation_moving_average_speed * 1000; - var res = 0; - var scale = ''; - if (s <= 1000) - { - res = s.toString(); - scale = "o/s"; - } - else if (s < 1000000) - { - res = Math.floor(s/1000) + ((Math.floor(s/100) - (Math.floor(s/1000) * 10)) / 10); - scale = "Ko/s"; - } - else - { - res = Math.floor(s/1000000) + ((Math.floor(s/100000) - (Math.floor(s/1000000) * 10)) / 10); - scale = "Mo/s"; - } - if (res == 0) - return ''; - else - return res.toString() + ' ' + scale; -} - -function milliseconds_to_date_string (milliseconds) -{ - function numberEnding (number) { - return (number > 1) ? 's' : ''; - } - - var temp = Math.floor(milliseconds / 1000); - var years = Math.floor(temp / 31536000); - if (years) { - return years + ' year' + numberEnding(years); - } - var days = Math.floor((temp %= 31536000) / 86400); - if (days) { - return days + ' day' + numberEnding(days); - } - var hours = Math.floor((temp %= 86400) / 3600); - if (hours) { - return hours + ' hour' + numberEnding(hours); - } - var minutes = Math.floor((temp %= 3600) / 60); - if (minutes) { - return minutes + ' minute' + numberEnding(minutes); - } - var seconds = temp % 60; - if (seconds) { - return seconds + ' second' + numberEnding(seconds); - } - return 'less than a second'; -} - -function upload_time_estimation_time_string() -{ - // Estimate remaining time - var t = (upload_time_estimation_total_size - upload_time_estimation_transfered_size) - / upload_time_estimation_moving_average_speed; - if (t == -1) - return '' - else - return milliseconds_to_date_string (t); -} -