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]));
}
}