var menuTimeout; /* draw_menu(id of menu, left position, top position, menu elements) */ function draw_menu(id,left_pos,top_pos,elements){ var menu = document.getElementById('menu_newFile'+id); if (menu == null){ menu = document.createElement('DIV'); menu.id = "menu_newFile"+id; menu.style.left = left_pos+"px"; menu.style.top = top_pos+"px"; for(j in elements) menu.innerHTML += ""+elements[j]['text']+"
"; menu.onmouseout = function () { menuTimeout = setTimeout("document.getElementById('menu_newFile"+id+"').style.visibility = 'hidden'",50);} menu.onmouseover = function () { clearTimeout(menuTimeout); }; menu.className = 'menubox'; menu.style.zIndex='1'; document.getElementById('divAppboxHeader').appendChild(menu); } menu.style.visibility = 'visible'; } function toolbar_control(arg) { //Used to get button position var button = document.getElementsByName(arg); button = button[0]; switch (arg) { case 'newdir': break; case 'new': elements = new Array(); elements[0] = new Array(); elements[0]['text'] = get_lang('empty file'); elements[0]['url'] = 'javascript:newEmptyFile();'; elements[1] = new Array(); elements[1]['text'] = get_lang('File from model'); address = document.location.toString(); address = address.split("?"); elements[1]['url'] = address[0]+"?menuaction=filemanager.uifilemanager.fileModels"; elements[2] = new Array(); elements[2]['text'] = get_lang('Upload'); address = document.location.toString(); address = address.split("?"); elements[2]['url'] = address[0]+"?menuaction=filemanager.uifilemanager.index&upload=clicked&upload.x=1&path="+base64_encode(document.getElementById('cdtodir').value); draw_menu(arg,button.parentNode.offsetLeft+50,190,elements); break; case 'rename': // button : ' var one_checked = false; files=document.getElementsByName('fileman'); for (i = 0; i < files.length; i++) if (files[i].checked){ one_checked = true; files[i].checked = false; var nameLink = document.getElementById('name_'+files[i].value); var inputName = document.createElement('INPUT'); inputName.id = 'input_'+files[i].value; var filename = nameLink.innerHTML; inputName.value = filename; inputName.onblur = function () { cExecute('/index.php?menuaction=filemanager.vfs_functions.rename&file='+base64_encode(this.id.substr(6))+'&to='+base64_encode(this.value)+"&path="+base64_encode(currentPath.value),updateRename) }; nameLink.parentNode.appendChild(inputName); nameLink.parentNode.removeChild(nameLink); } if (!one_checked) write_msg(get_lang('Please select a file')); break; case 'edit': var one_checked = false; files=document.getElementsByName('fileman'); for (i = 0; i < files.length; i++) if (files[i].checked){ one_checked = true; var filename=files[i].value; } if (one_checked){ address = document.location.toString(); address = address.split("&"); document.location = address[0]+"&"+arg+".x=1&filename="+base64_encode(filename); } else { write_msg(get_lang('Please select a file')); return; } break; case 'delete': filesUrl = ""; var one_checked = false; files=document.getElementsByName('fileman'); var j=0; for (i = 0; i < files.length; i++) if (files[i].checked){ one_checked = true; filesUrl += "&fileman["+j+"]="+files[i].value; j++; } if (!one_checked) { write_msg(get_lang('Please select a file')); return; } cExecute('/index.php?menuaction=filemanager.vfs_functions.delete&path='+ base64_encode(currentPath.value)+filesUrl,handlerDelete); break; case 'move_to': case 'copy_to': filesUrl = ""; var one_checked = false; files=document.getElementsByName('fileman'); var j=0; for (i = 0; i < files.length; i++) if (files[i].checked){ one_checked = true; filesUrl += "&fileman["+j+"]="+files[i].value; j++; } if (!one_checked) { write_msg(get_lang('Please select a file')); return; } var elements = new Array(); inputEl = document.getElementsByName('todir'); for(i=0; i< inputEl[0].childNodes.length; i++) { elements[i] = new Array(); elements[i]['text'] =inputEl[0].childNodes[i].innerHTML; address = document.location.toString(); address = address.split("&"); elements[i]['url'] = address[0]+ "&todir="+inputEl[0].childNodes[i].innerHTML+ "&"+arg+".x=10"+filesUrl; } draw_menu(arg,button.parentNode.offsetLeft+50,190,elements); break; default: return; } } var denyFileExtensions = new Array('exe','com','reg','chm','cnf','hta','ins', 'jse','job','lnk','pif','src','scf','sct','shb', 'vbe','vbs','wsc','wsf','wsh','cer','its','mau', 'mda','mar','mdz','prf','pst'); function validateFileExtension(fileName){ var error_flag = false; var fileExtension = fileName.split("."); fileExtension = fileExtension[(fileExtension.length-1)]; for(var i=0; i 1) for(j = 1; typeof(arguments[j]) != 'undefined'; j++) _value = _value.replace("%"+j,arguments[j]); return _value; } function newEmptyFile(){ var name = prompt(get_lang('Enter with the name of new file/directory'), ''); var input_text = document.getElementById('newfile_or_dir'); if (name != null && name != '' && validateFileExtension(name)) { var fileExtension = name.split("."); fileExtension = fileExtension[1]; if (typeof(fileExtension) == 'undefined') input_text.value = name+".html"; else input_text.value = name; address = document.location.toString(); address = address.split("&"); document.location = address[0]+"&newfile.x=1&newfile_or_dir="+input_text.value; } } /* * base64.js - Base64 encoding and decoding functions * * Copyright (c) 2007, David Lindquist * Released under the MIT license */ function base64_encode(str) { var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; var encoded = []; var c = 0; while (c < str.length) { var b0 = str.charCodeAt(c++); var b1 = str.charCodeAt(c++); var b2 = str.charCodeAt(c++); var buf = (b0 << 16) + ((b1 || 0) << 8) + (b2 || 0); var i0 = (buf & (63 << 18)) >> 18; var i1 = (buf & (63 << 12)) >> 12; var i2 = isNaN(b1) ? 64 : (buf & (63 << 6)) >> 6; var i3 = isNaN(b2) ? 64 : (buf & 63); encoded[encoded.length] = chars.charAt(i0); encoded[encoded.length] = chars.charAt(i1); encoded[encoded.length] = chars.charAt(i2); encoded[encoded.length] = chars.charAt(i3); } return encoded.join(''); } function base64_decode(str) { var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; var invalid = { strlen: (str.length % 4 != 0), chars: new RegExp('[^' + chars + ']').test(str), equals: (/=/.test(str) && (/=[^=]/.test(str) || /={3}/.test(str))) }; if (invalid.strlen || invalid.chars || invalid.equals) throw new Error('Invalid base64 data'); var decoded = []; var c = 0; while (c < str.length) { var i0 = chars.indexOf(str.charAt(c++)); var i1 = chars.indexOf(str.charAt(c++)); var i2 = chars.indexOf(str.charAt(c++)); var i3 = chars.indexOf(str.charAt(c++)); var buf = (i0 << 18) + (i1 << 12) + ((i2 & 63) << 6) + (i3 & 63); var b0 = (buf & (255 << 16)) >> 16; var b1 = (i2 == 64) ? -1 : (buf & (255 << 8)) >> 8; var b2 = (i3 == 64) ? -1 : (buf & 255); decoded[decoded.length] = String.fromCharCode(b0); if (b1 >= 0) decoded[decoded.length] = String.fromCharCode(b1); if (b2 >= 0) decoded[decoded.length] = String.fromCharCode(b2); } return decoded.join(''); } function setRestricted(data){ if (data.indexOf("True") == 0){ returnVal = data.split(':'); var img_lock = document.getElementById('restrict_'+returnVal[1]); if (img_lock.src.indexOf('button_unlock') > 0) { img_lock.src = img_lock.src.replace(/button_unlock/g,'button_lock'); write_msg(get_lang('%1 marked as restricted',returnVal[1])); } else { img_lock.src = img_lock.src.replace(/button_lock/g,'button_unlock'); write_msg(get_lang('%1 unmarked as restricted',returnVal[1])); } } else write_error("Could not mark as restricted"); } function setComments(el){ if (el.innerHTML == "<"+get_lang('no comments')+">") var comment = ""; else var comment = el.innerHTML; var filename = base64_encode(el.id); input_el = document.createElement('INPUT'); input_el.id = "inputTemp"+el.id; if (comment.length > 0) input_el.size = comment.length; input_el.maxlength = "255"; input_el.value = comment; el.parentNode.appendChild(input_el); el.parentNode.removeChild(el); input_el.focus(); input_el.onblur = function () { cExecute('/index.php?menuaction=filemanager.vfs_functions.editComment&file='+ filename+'&comment='+base64_encode(this.value),updateComment); }; } function updateComment(data) { var returnVal = data.split(':'); if (data.indexOf("True") == 0){ var input_el = document.getElementById("inputTemp"+returnVal[1]); span_comment = document.createElement('span'); span_comment.innerHTML = input_el.value; span_comment.id=returnVal[1]; span_comment.onclick=function () { setComments(span_comment) }; input_el.parentNode.appendChild(span_comment); input_el.parentNode.removeChild(input_el); write_msg(get_lang('Updated comment for %1',returnVal[1])); } else { if (returnVal[1] == "badchar") write_error(get_lang('Comments cannot contain "%1"',returnVal[2])); else write_error(get_lang('You have no permission to access this file')); } } function handlerDelete(data){ var returnVal = data.split(':'); for (i=0; i < returnVal.length; i++) if (returnVal[i] == 'False'){ write_error(get_lang('Could not delete %1',returnVal[i+1])); return; }else { if (returnVal[i] != ""){ write_msg(get_lang('Deleted %1',returnVal[i])); var element = document.getElementById(returnVal[i]); var pai = element.parentNode.parentNode; pai.parentNode.removeChild(pai); } } } function updateRename(data) { var returnVal = data.split(':'); if (data.indexOf("True") == 0){ write_msg(get_lang('Renamed %1 to %2',returnVal[1],returnVal[2])); var nameLink = document.createElement('A'); var inputName = document.getElementById('input_'+returnVal[1]); nameLink.innerHTML = returnVal[2]; nameLink.href="./index.php?menuaction=filemanager.uifilemanager.view&file="+base64_encode(returnVal[2])+"&path="+base64_encode(currentPath.value); inputName.parentNode.appendChild(nameLink); inputName.parentNode.removeChild(inputName); } else { if (returnVal[1] == "badchar") write_error(get_lang('File names cannot contain "%1"',returnVal[2])); else if (returnVal[1] == "slashes") write_error(get_lang('File names cannot contain \\ or /')); if (returnVal[1] == "editing") write_error(get_lang('This file is being edited right now')); else write_error(get_lang('Could not rename %1 to %2', returnVal[1], returnVal[2])); } }