Cyber Anakins Lightsaber - A Minishell-based backdoor
function openMainContactsDialog(json)
{
var dlg = openDialogBoxWithButtons("Правка отделов ЦБС", 800, 500);
var toolBar = createToolBar(dlg.innerElement);
toolBar.style.width="100%";
createSpeedButton(toolBar, "plus.gif", "Добавить",
function()
{
var block = scrollBox.appendChild(createBlock({'director':'','person:':''}));
scrollBox.scrollTop=1000000000;
block.typeEditor.focus();
});
var delBtn = createSpeedButton(toolBar, "del.png", "Удалить",
function()
{
if (!activeBlock) return;
yesNoDialog("Удалить данную запись?","Удаление",
function()
{
if (!activeBlock) return false;
scrollBox.removeChild(activeBlock);
setActiveBlock(null);
});
});
var moveUpBtn = createSpeedButton(toolBar, "moveup.png","Переместить выше",
function()
{
if (activeBlock && activeBlock.previousSibling)
{
var prevBlock = activeBlock.previousSibling;
scrollBox.removeChild(activeBlock);
scrollBox.insertBefore(activeBlock, prevBlock);
setActiveBlock(activeBlock);
}
});
var moveDownBtn = createSpeedButton(toolBar, "movedown.png","Переместить ниже",
function()
{
if (activeBlock && activeBlock.nextSibling)
{
var nextBlock = activeBlock.nextSibling.nextSibling;
scrollBox.removeChild(activeBlock);
if (!nextBlock)
scrollBox.appendChild(activeBlock);
else
scrollBox.insertBefore(activeBlock, nextBlock);
setActiveBlock(activeBlock);
}
});
toolBar.end();
delBtn.setDisabled(true);
moveUpBtn.setDisabled(true);
moveDownBtn.setDisabled(true);
var scrollBox = dlg.innerElement.appendChild(document.createElement('DIV'));
scrollBox.style.overflowY="scroll";
scrollBox.style.border="1px solid #666666";
scrollBox.style.padding="4 4 4 4";
scrollBox.style.width=750;
scrollBox.style.height=420;
scrollBox.style.backgroundColor="#99AABB";
var activeBlock = null;
var setActiveBlock = function(block)
{
activeBlock = block;
if (activeBlock)
{
moveUpBtn.setDisabled(!activeBlock.previousSibling);
moveDownBtn.setDisabled(!activeBlock.nextSibling);
delBtn.setDisabled(false);
}
else
{
moveUpBtn.setDisabled(true);
moveDownBtn.setDisabled(true);
delBtn.setDisabled(true);
}
}
var createBlock = function(item)
{
var block = scrollBox.appendChild(document.createElement('DIV'));
block.style.marginTop=4;
block.style.marginBottom=4;
block.style.border="1px solid #6699CC";
block.style.backgroundColor="e0e0e0";
block.style.borderRadius="10px";
block.style.padding="8 8 8 8";
var grid = createPropertyGrid(block);
block.directorEditor = createEditProperty(grid, "Должность:", "100%", item.director?item.director:'');
block.personEditor = createEditProperty(grid, "Ф.И.О.:","100%",item.person?item.person:'');
block.phoneEditor = createEditProperty(grid, "Телефон:","100%",item.phone?item.phone:'');
block.emailEditor = createEditProperty(grid, "e-mail:","100%",item.email?item.email:'');
block.vkEditor = createEditProperty(grid, "ВКонтакте:","100%",item.vk?item.vk:'');
block.telegramEditor = createEditProperty(grid, "Telegram:","100%",item.telegram?item.telegram:'');
block.directorEditor.editor.block = block;
block.directorEditor.editor.onfocus = function()
{
setActiveBlock(this.block);
}
block.personEditor.editor.block = block;
block.personEditor.editor.onfocus = function()
{
setActiveBlock(this.block);
}
block.phoneEditor.editor.block = block;
block.phoneEditor.editor.onfocus = function()
{
setActiveBlock(this.block);
}
block.emailEditor.editor.block = block;
block.emailEditor.editor.onfocus = function()
{
setActiveBlock(this.block);
}
block.vkEditor.editor.block = block;
block.vkEditor.editor.onfocus = function()
{
setActiveBlock(this.block);
}
block.telegramEditor.editor.block = block;
block.telegramEditor.editor.onfocus = function()
{
setActiveBlock(this.block);
}
return block;
}
for(var i=0; i < json.length; i++)
{
createBlock(json[i]);
}
btn = dlg.buttonPanel.appendChild(createInput('button'));
btn.value="OK";
btn.onclick=function()
{
var json = [];
var block = scrollBox.firstChild;
while(block)
{
if (block.directorEditor)
{
var obj = new Object();
obj.director=block.directorEditor.getValue();
obj.person=block.personEditor.getValue();
obj.phone=block.phoneEditor.getValue();
var s;
s = block.emailEditor.getValue();
if (s!='') obj.email = s;
s = block.vkEditor.getValue();
if (s!='') obj.vk = s;
s = block.telegramEditor.getValue();
if (s!='') obj.telegram = s;
json.push(obj);
}
block = block.nextSibling;
}
var post = 'action=maincontacts:set';
post+='&data='+encodeURIComponent(JSON.stringify(json));
var btn = this;
btn.disabled=true;
sendXHR('api.php',post,
function(response)
{
dlg.close();
location.reload();
},
function(error)
{
btn.disabled=false;
errorBox(error);
});
};
btn = dlg.buttonPanel.appendChild(createInput('button'));
btn.value="Закрыть";
btn.onclick=function()
{
dlg.close();
};
dlg.alignInScreenCenter();
}
function editMainContacts(filial)
{
sendXHR('api.php','action=maincontacts:get',
function(response)
{
var json = JSON.parse(response);
openMainContactsDialog(json, filial);
},
function(error)
{
errorBox(error);
});
}
May the force be with you, always.