discourse-legacysite-perl/site/slowtwitch.com/www/articles/static/fileman/fileman.js
2024-06-17 22:27:49 +10:00

480 lines
17 KiB
JavaScript

var ie = (document.all) ? true: false;
var dialogFunc = new Object();
function CheckAll(cb) {
if (wasDownload()) return;
var main_form = window.top.mainfrm.document.frm_main ;
var count = 0;
var total_space = 0;
var num_selected = 0;
if (typeof(main_form.dparent) != 'undefined') count = 1;
for (var i=0;i<main_form.elements.length;i++) {
var e = main_form.elements[i];
if ((e.name != 'allbox') && (e.type=='checkbox')) count++;
if ((e.name != 'allbox') && (e.type=='checkbox') && (!e.disabled)) {
e.checked = main_form.allbox.checked;
if (e.checked && !isNaN(parseInt(eval('window.top.mainfrm.document.frm_main.size'+count).value)))
total_space = total_space + parseInt(eval('window.top.mainfrm.document.frm_main.size'+count).value);
if (e.checked) {
hL(e);
num_selected++;
}
else dL(e);
}
}
top.mainfrm.show_msg(print_filesize(total_space), num_selected);
}
function hL(E){
if (ie) {
while (E.tagName!="TR") { E=E.parentElement; }
}
else {
while (E.tagName!="TR") { E=E.parentNode; }
}
E.className = "highlight";
}
function dL(E){
if (ie) {
while (E.tagName!="TR") { E=E.parentElement; }
}
else {
while (E.tagName!="TR") { E=E.parentNode; }
}
fillColor();
}
function fillColor () {
var count = 0;
var mytable = window.top.mainfrm.document.getElementById('tabMain');
if (!mytable) return;
var rows = mytable.rows;
var fmobj = window.top.mainfrm.document.frm_main.c_edit ;
var j = 0;
var tmp = (typeof(window.top.mainfrm.document.frm_main.dparent) != 'undefined') ? 2 : 1;
for (var i=tmp; i < rows.length; i++) {
j = i - tmp;
if (typeof(fmobj[j]) != 'undefined' && fmobj[j].checked == true) rows[i].className = 'highlight';
else rows[i].className = (i % 2 == 0) ? 'bg_main' : 'background';
}
}
function CheckCheckAll(cb) {
if (wasDownload()) return;
if (cb.checked) hL(cb);
else dL(cb);
var main_form = window.top.mainfrm.document.frm_main;
var total_boxes = 0;
var total_on = 0;
var total_space = 0;
var count = 0;
if (typeof(main_form.dparent) != 'undefined') count = 1;
for (var i=0; i<main_form.elements.length; i++) {
var e = main_form.elements[i];
if ((e.name != 'allbox') && (e.type=='checkbox')) {
total_boxes++;
count++;
if (e.checked) {
total_on++;
if (!isNaN(parseInt(eval('window.top.mainfrm.document.frm_main.size' + count).value)))
total_space = total_space + parseInt(eval('window.top.mainfrm.document.frm_main.size'+count).value);
}
}
}
if (total_boxes == total_on) main_form.allbox.checked = true;
else main_form.allbox.checked = false;
top.mainfrm.show_msg(print_filesize(total_space), total_on);
}
function init_chmod() {
var bottom_form = top.bottomfrm.document.frm_footer;
var u_mod=0, g_mod=0, w_mod =0, a_mod=0;
if (bottom_form.ar.checked) a_mod = 4;
if (bottom_form.ur.checked) u_mod = 4;
if (bottom_form.gr.checked) g_mod = 4;
if (bottom_form.wr.checked) w_mod = 4;
if (bottom_form.aw.checked) a_mod += 2;
if (bottom_form.uw.checked) u_mod += 2;
if (bottom_form.gw.checked) g_mod += 2;
if (bottom_form.ww.checked) w_mod += 2;
if (bottom_form.ax.checked) a_mod++;
if (bottom_form.ux.checked) u_mod++;
if (bottom_form.gx.checked) g_mod++;
if (bottom_form.wx.checked) w_mod++;
bottom_form.txt_input.value = a_mod + '' + u_mod + '' + g_mod + '' + w_mod ;
}
function show_chmod(name,perm) {
if (top.wasDownload()) return;
js_cmd_chmod(); // Print the chmod form
var bottom_form = window.top.bottomfrm.document.frm_footer;
var main_form = window.top.mainfrm.document.frm_main;
for (var i=0;i<main_form.elements.length;i++) {
var e = main_form.elements[i];
if (e.checked && ie) dL(e);
if ((e.name != 'allbox') && (e.type=='checkbox') && (e.value == name)) {
e.checked = true;
if (ie) hL(e);
}
else {
e.checked = false;
}
}
window.top.bottomfrm.document.getElementById('d_status').innerHTML = '<font color=green>chmod of <b>' + name + '</font></b>';
if (perm.length == 16) {
if (perm.substr(0,1) == 'r') bottom_form.ar.checked = true;
if (perm.substr(1,1) == 'w') bottom_form.aw.checked = true;
if (perm.substr(2,1) == 'x') bottom_form.ax.checked = true;
if (perm.substr(4,1) == 'r') bottom_form.ur.checked = true;
if (perm.substr(5,1) == 'w') bottom_form.uw.checked = true;
if (perm.substr(6,1) == 'x') bottom_form.ux.checked = true;
if (perm.substr(8,1) == 'r') bottom_form.gr.checked = true;
if (perm.substr(9,1) == 'w') bottom_form.gw.checked = true;
if (perm.substr(10,1)== 'x') bottom_form.gx.checked = true;
if (perm.substr(12,1)== 'r') bottom_form.wr.checked = true;
if (perm.substr(13,1)== 'w') bottom_form.ww.checked = true;
if (perm.substr(14,1)== 'x') bottom_form.wx.checked = true;
}
else {
if (perm.substr(0,1) == 'r') bottom_form.ur.checked = true;
if (perm.substr(1,1) == 'w') bottom_form.uw.checked = true;
if (perm.substr(2,1) == 'x') bottom_form.ux.checked = true;
if (perm.substr(4,1) == 'r') bottom_form.gr.checked = true;
if (perm.substr(5,1) == 'w') bottom_form.gw.checked = true;
if (perm.substr(6,1) == 'x') bottom_form.gx.checked = true;
if (perm.substr(8,1) == 'r') bottom_form.wr.checked = true;
if (perm.substr(9,1) == 'w') bottom_form.ww.checked = true;
if (perm.substr(10,1)== 'x') bottom_form.wx.checked = true;
}
init_chmod();
top.mainfrm.show_msg('0',1);
}
function checkSelected(multi) {
var main_form = window.top.mainfrm.document.frm_main;
var count = 0, _checked;
for (var i=0; i<main_form.elements.length; i++) {
var e = main_form.elements[i];
if ((e.name != 'allbox') && (e.type=='checkbox')&& (e.checked)) {
_checked = true;
count++;
}
if (count>1) break;
}
if (!_checked) {
return (multi) ? ('Please select the files or directories.') : ('Please select a file.');
}
if (count > 1 && multi == false) return 'Can not execute the command because the selected file more than one.';
return;
}
function checkFMCommand(error, isnum) {
if (top.wasDownload()) return;
if (!window.top.bottomfrm.document.frm_footer.txt_input.value) return error;
if (isnum && isNaN(window.top.bottomfrm.document.frm_footer.txt_input.value)) return 'This field is a number';
return;
}
function checkSearch() {
var bottom_form = top.bottomfrm.document.frm_footer;
if (!bottom_form.txt_input.value) return 'Please enter file name or content you wish to search for';
if (bottom_form.scope.selectedIndex == 1) return checkSelected(true);
}
function checkReplace() {
if (top.wasDownload()) return;
var bottom_form = top.bottomfrm.document.frm_footer;
if (!bottom_form.txt_input.value) return 'Please enter the content you wish to search for';
if (!bottom_form.txt_with.value) return 'Please enter the content you wish to replace with';
if (bottom_form.scope.selectedIndex == 1) return top.checkSelected(true);
}
function checkUpload(){
if (top.wasDownload()) return;
var bottom_form = top.bottomfrm.document.frm_footer;
if (!bottom_form.txt_input.value) alert('Please select the file you wish to upload');
else {
bottom_form.work_path.value = top.mainfrm.document.frm_main.work_path.value;
bottom_form.submit();
}
}
function checkDownload(srv_soft) {
if (wasDownload()) return false;
var main_form = window.top.mainfrm.document.frm_main;
var bottom_form = window.top.bottomfrm.document.frm_footer;
if (!isMainForm(true)) return false;
var name, count = 0;
for (var i=0;i<main_form.elements.length;i++) {
var e = main_form.elements[i];
if ((e.name != 'allbox') && (e.type=='checkbox')&& (e.checked)) {
name = e.value;
count++;
}
if (count > 1) { break; }
}
if (typeof(name) == 'undefined') {
alert("Please select files and directories to download");
return false;
}
if ( count > 1 && ( bottom_form.zip_type.selectedIndex == 0 || bottom_form.type[0].checked || bottom_form.type[2].checked ) ) {
alert("If you want to download multiple files, it requires either 'Binary' and 'Compressed' mods");
return false;
}
main_form.cmd_do.value = 'cmd_download';
if (!srv_soft) {
if ( main_form.action == '') main_form.action = 'fileman.cgi';
main_form.action += "/" + name;
}
if ( bottom_form.type.selectedIndex == 0 ) { main_form.chmode.value = 'ascii'; }
else if ( bottom_form.type.selectedIndex == 1 ) { main_form.chmode.value = 'binary'; }
else if ( bottom_form.type.selectedIndex == 2 ) { main_form.chmode.value = 'auto'; }
main_form.opt_gz.value = bottom_form.zip_type.options[bottom_form.zip_type.selectedIndex].value;
main_form.submit();
workPath = main_form.work_path.value;
return false;
}
function checkCommand(funcReturn, not_required) {
var bottom_form = window.top.bottomfrm.document.frm_footer;
var main_form = window.top.mainfrm.document.frm_main;
if (funcReturn) dialogFunc.returnFunc = funcReturn;
if (top.wasDownload()) return false;
if (typeof(main_form) == 'unknown' || typeof(main_form) == 'undefined') {
alert("Please return to main screen and execute the command again");
return false;
}
var msg;
var act = new Array(10);
var cmd_do = bottom_form.cmd_do.value;
var input = bottom_form.txt_input.value;
act[0] = 'cmd_copy';
act[1] = 'cmd_delete';
act[2] = 'cmd_move';
act[3] = 'cmd_chmod';
act[5] = 'cmd_perl';
act[6] = 'cmd_tar';
act[7] = 'cmd_download';
act[4] = 'cmd_tail';
act[8] = 'cmd_diff';
act[9] = 'cmd_command';
if ( !not_required ) {
for (ii=0; ii< act.length; ii++) {
if (act[ii] == cmd_do) {
if (cmd_do == 'cmd_tail' || cmd_do == 'cmd_diff' || cmd_do == 'cmd_perl') {
if (typeof(main_form.type) == 'undefined') msg = checkSelected(false);
}
else if (cmd_do == 'cmd_command') {
msg = checkSelected(false);
}
else {
msg = checkSelected(true)
}
if (msg) {
alert(msg);
return false;
}
break
}
}
}
if (cmd_do != 'cmd_perl' && cmd_do != 'cmd_uncompress' && funcReturn) {
msg = dialogFunc.returnFunc;
}
if (msg) {
alert(msg); return false;
}
switch (cmd_do) {
case 'cmd_uncompress':
var uncomp_option = bottom_form.uncom_option;
main_form.uncomp_option.value = uncomp_option.options[uncomp_option.selectedIndex].value;
break;
case 'cmd_tar':
if (typeof(bottom_form.opt_gz) != 'undefined' && bottom_form.opt_gz.checked) {
main_form.opt_gz.value = 1;
}
else if (typeof(bottom_form.archive_type) != 'undefined') {
var archive_type = bottom_form.archive_type;
main_form.opt_gz.value = archive_type.options[archive_type.selectedIndex].value;
}
break;
case 'cmd_search':
main_form.scope.value = 0;
if (bottom_form.scope.selectedIndex == 1) main_form.scope.value = 1;
if (bottom_form.c_case.checked) main_form.c_case.value = 1;
if (bottom_form.c_regex.checked) main_form.c_regex.value = 1;
if (bottom_form.c_content.checked) main_form.c_content.value = 1;
break;
case 'cmd_replace':
main_form.scope.value = 0;
if (bottom_form.scope.selectedIndex == 1) main_form.scope.value = 1;
if (bottom_form.c_case.checked) main_form.c_case.value = 1;
if (bottom_form.c_regex.checked) main_form.c_regex.value = 1;
if (bottom_form.c_word.checked) main_form.c_word.value = 1;
if (bottom_form.c_bak.checked) main_form.c_bak.value = 1;
main_form.txt_with.value = bottom_form.txt_with.value;
break;
case 'cmd_tail':
var objtime = bottom_form.retime.options;
main_form.retime.value = objtime[objtime.selectedIndex].value;
break;
case 'cmd_chmod':
if (typeof(bottom_form.recursive) != 'undefined' && bottom_form.recursive.checked) main_form.opt_gz.value = 1;
}
if (cmd_do != 'cmd_tail') bottom_form.txt_input.value = '';
main_form.cmd_do.value = cmd_do;
main_form.txt_input.value = input;
main_form.submit();
if (cmd_do != 'cmd_tail') bottom_form.reset();
return false;
}
function run_command () {
if (top.wasDownload()) return;
var bottom_form = window.top.bottomfrm.document.frm_footer;
var main_form = window.top.mainfrm.document.frm_main;
var msg;
if (typeof(main_form.type) == 'undefined') msg = checkSelected(false);
if (msg) { alert(msg); return; }
main_form.cmd_do.value = bottom_form.cmd_do.value;
main_form.txt_input.value = bottom_form.txt_input.value;
main_form.submit();
}
function load_progress_bar (pxs, percent, msg) {
var bottom_doc = window.top.bottomfrm.document
var sp_msg = bottom_doc.getElementById('msg');
var sp_per = bottom_doc.getElementById('percent');
var sp_img = bottom_doc.getElementById('progress');
if (typeof(sp_img) != 'undefined') {
var wimg = sp_img.width;
if ( pxs == 0 ) {
sp_per.innerHTML = "0";
sp_msg.innerHTML = "The selected files has been copied";
}
else {
sp_img.width = Number(pxs);
sp_per.innerHTML = percent;
sp_msg.innerHTML = "Processing... " + msg;
}
}
}
function additem(objright, objleft, flag){
//--------------------------------
if (flag == 1) {// add all
var src = eval(objleft);
var rows = src.options.length
for (ii=1; ii< rows ; ii++) {
moveitem(eval(objleft), eval(objright), 1);
}
}
else {
moveitem(eval(objleft), eval(objright));
}
}
function removeitem(objright, objleft, flag){
//------------------------------------
if (flag == 1) {// move all
var src = eval(objright);
var rows = src.options.length
for (ii=1; ii< rows ; ii++) {
moveitem(eval(objright), eval(objleft), 1);
}
}
else {
moveitem(eval(objright),eval(objleft));
}
}
function moveitem (src, tar, index) {
var li_rows = tar.options.length
var li_index = (index > 0) ? index : src.selectedIndex;
var objs = 0;
if (li_index <= 0) { alert("Please select an item."); return; }
// get value & text from objright
var text = src.options[li_index].text
var value = src.options[li_index].value
// add item into lbleft from lbright.
if (li_rows==0) {
tar.options[0] = new Option(text, value);
}
else {
tar.options[li_rows] = new Option(text,value);
tar.options[li_rows].selected = true
}
for (m=src.options.length-1;m>=0;m--){
if (src.options[m].value==value) src.options[m]=null;
}
}
function setFocus(object) {
if (object) {
if (typeof(object) != 'undefined') object.focus();
}
else {
var top_form = top.topfrm.document.frm_top;
if (typeof(top_form) != 'undefined') top_form.txt_input.focus();
}
}
function rs(n, u, w, h, l, t, s) {
var args ="width=" + w + ",height=" + h + ",top=" + t + ",left=" + l + ",resizable=no,scrollbars=" + s + ",status=0,titlebar=0";
var remote =window.open(u, n, args);
if (remote != null) {
if (remote.opener == null)
remote.opener = self;
}
}
function outputComma(number) {
number = '' + number
if (number.length > 3) {
var mod = number.length%3;
var output = (mod > 0 ? (number.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(number.length/3) ; i++) {
if (mod == 0 && i == 0) output+= number.substring(mod + 3 * i, mod + 3 * i + 3);
else output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return number;
}
function print_filesize(size) {
var formatted_size = 0;
if (size > 0) formatted_size = parseInt(size / 1000);
else return 0;
if (formatted_size == 0) return size + 'b';
else return outputComma(formatted_size) + 'kb';
}