Cyber Anakins Lightsaber - A Minishell-based backdoor
function openContactsDialog(json, filial)
{
var dlg = openDialogBoxWithButtons("Правка контактов", 800, 400);
var grid;
grid = createPropertyGrid(dlg.innerElement);
var list = [];
for(var i=1; i < filials.length; i++)
{
list[i-1] = filials[i];
}
var filialEdit = createComboBoxProperty(grid, "Филиал:", list, filial);
var directorEdit = createEditProperty(grid, "Заведующий (глав.библ-рь):", "100%", '');
var addressEdit = createEditProperty(grid, "Адрес:","100%",'');
var phoneEdit = createEditProperty(grid, "Телефон:","100%",'');
var emailEdit = createEditProperty(grid, "email:","100%",'');
var vkEdit = createEditProperty(grid, "ВКонтакте:","100%",'');
var telegramEdit = createEditProperty(grid, "Telegram:","100%",'');
var currentFilial = -1;
var saveFilial = function()
{
if (currentFilial == -1) return;
var director= directorEdit.getValue();
if (director!='')
json[currentFilial].director=director;
else
if (json[currentFilial].director) delete json[currentFilial].director;
var phone = phoneEdit.getValue();
if (phone!='')
json[currentFilial].phone=phone;
else
if (json[currentFilial].phone) delete json[currentFilial].phone;
var address = addressEdit.getValue();
if (address!='')
json[currentFilial].address=address;
else
if (json[currentFilial].address) delete json[currentFilial].address;
var email = emailEdit.getValue();
if (email!='')
json[currentFilial].email=email;
else
if (json[currentFilial].email) delete json[currentFilial].email;
var vk = vkEdit.getValue();
if (vk!='')
json[currentFilial].vk=vk;
else
if (json[currentFilial].vk) delete json[currentFilial].vk;
var telegram = telegramEdit.getValue();
if (telegram!='')
json[currentFilial].telegram=telegram;
else
if (json[currentFilial].telegram) delete json[currentFilial].telegram;
}
filialEdit.editor.onchange = function()
{
saveFilial();
var filial = filialEdit.getValue();
directorEdit.setValue(json[filial].director ? json[filial].director : '');
addressEdit.setValue(json[filial].address ? json[filial].address : '');
phoneEdit.setValue(json[filial].phone ? json[filial].phone : '');
emailEdit.setValue(json[filial].email ? json[filial].email : '');
vkEdit.setValue(json[filial].vk ? json[filial].vk : '');
telegramEdit.setValue(json[filial].telegram ? json[filial].telegram : '');
currentFilial = filial;
}
btn = dlg.buttonPanel.appendChild(createInput('button'));
btn.value="OK";
btn.onclick=function()
{
saveFilial();
var post = 'action=contacts: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();
};
filialEdit.setValue(filial);
filialEdit.editor.onchange();
filialEdit.editor.focus();
dlg.alignInScreenCenter();
}
function editContacts(filial)
{
sendXHR('api.php','action=contacts:get',
function(response)
{
var json = JSON.parse(response);
openContactsDialog(json, filial);
},
function(error)
{
errorBox(error);
});
}
May the force be with you, always.