Cyber Anakins Lightsaber - A Minishell-based backdoor

Current Path : /home/bjb2293782/xn--80abaeoqbbrbgf8aea5a2a2z.xn--p1ai/docs/
Upload File :
Current File : /home/bjb2293782/xn--80abaeoqbbrbgf8aea5a2a2z.xn--p1ai/docs/progeditor.js

function openProgDescDialog(json, doOpen)
{
	var dlg = openDialogBoxWithButtons("Правка мероприятия "+json.id, 800, 500);
	var tabControl = new TabControl(dlg.innerElement);

	var page,grid;

	page = tabControl.addTab('Основные');
	grid = createPropertyGrid(page);

	var nameEditor = createEditProperty(grid, "Название мероприятия:", "100%", json.name);
	var subnameEditor = createEditProperty(grid, "Расшифровка названия:", "100%", json.subname);
	var descEditor = createMemoProperty(grid, "Описание мероприятия:", 14, json.desc);
	var categoryEditor = createEditProperty(grid, "Возрастная категория:", 80, json.category);
	
	categoryEditor.editor.type="number";
	categoryEditor.editor.min=0;
	categoryEditor.editor.max=100;
	categoryEditor.editor.parentNode.appendChild(document.createElement('SPAN')).innerHTML='+';

	var peopleEditor = createEditProperty(grid, "Кол-во людей:", 80, json.people);
	peopleEditor.editor.type="number";
	peopleEditor.editor.min=0;
	peopleEditor.editor.max=100000;



	page = tabControl.addTab('Иллюстрации');
	createImageProperty(page, 320,320, json.images,
		function(formData, onOK)
		{
			formData.append('action','progdesc:addimages');
			formData.append('id',json.id);

			sendXHR('api.php', formData,
				function(response)
				{
					onOK(response);
				},
				function(error)
				{
					errorBox(error);
				});	

		},
		function(fileName, onOK)
		{
		 	sendXHR("api.php","action=progdesc:delimage&file="+encodeURIComponent(fileName),
		 		function(response)
		 		{
		 			onOK();
		 		},
		 		function(error)
		 		{
		 			errorBox(error);
		 		});	
		});

	page = tabControl.addTab('Запись');
	grid = createPropertyGrid(page);

	var needRegisterEditor = createCheckBoxProperty(grid, "По предварительной записи:", json.needRegister!=0,
		function()
		{
			howToRegisterEditor.style.display=this.checked ? "" : "none";
			whenRegisterEditor.style.display=this.checked ? "" : "none";
		});

	var howToRegisterEditor = createMemoProperty(grid, "Как записаться:", 4, json.howToRegister);
	var whenRegisterEditor = createDateProperty(grid, "До какого числа можно записаться:", json.whenRegister);


	howToRegisterEditor.style.display=json.needRegister!=0 ? "" : "none";
	whenRegisterEditor.style.display=json.needRegister!=0 ? "" : "none";

	createLinkProperty(grid, "Опубликовал:", json.author, json.authorName, editAdmin);
	createStaticProperty(grid, "Когда:", json.editTime);



	var btn = dlg.buttonPanel.appendChild(createInput('button'));
	btn.value = "OK";
	btn.onclick=function()
		{
			var post = "action=progdesc:set";
			post+='&id='+json.id;
			post+='&name='+encodeURIComponent(nameEditor.getValue());
			post+='&subname='+encodeURIComponent(subnameEditor.getValue());
			post+='&desc='+encodeURIComponent(descEditor.getValue());
			post+='&category='+categoryEditor.getValue();
			post+='&people='+peopleEditor.getValue();
			post+='&needRegister='+(needRegisterEditor.getValue()?1:0);
			post+='&howToRegister='+encodeURIComponent(howToRegisterEditor.getValue());
			post+='&whenRegister='+encodeURIComponent(whenRegisterEditor.getValue());

			var btn = this;
			btn.disabled=true;

			sendXHR('api.php',post,
				function(response)
				{
					dlg.close();
					if (doOpen)
						location = 'progdesc.php?id='+json.id;
					else
						location.reload();
				},
				function(error)
				{
					btn.disabled=false;
					errorBox(error);
				});
		};
	
	btn = dlg.buttonPanel.appendChild(createInput('button'));
	btn.value="Закрыть";
	btn.onclick = function()
		{
			dlg.close();
		};

	nameEditor.editor.focus();

	dlg.alignInScreenCenter();
}



function editProgDesc(id,doOpen)
{
	sendXHR('api.php','action=progdesc:get&id='+id,
		function(response)
		{
			openProgDescDialog(JSON.parse(response),doOpen);
		},
		function(error)
		{
			errorBox(error);
		});	
}

function newProgDesc(filial, doOpen)
{
	if (!filial) filial = adminFilial;

	sendXHR('api.php','action=progdesc:new&filial='+filial,
		function(response)
		{
			openProgDescDialog(JSON.parse(response), doOpen);
		},
		function(error)
		{
			errorBox(error);
		});
}

function delProgDesc(id)
{
	yesNoDialog("Удалить данное мероприятие?","Удаление мероприятия",
				function()
				{
				    sendXHR("api.php","action=progdesc:del&id="+id,
				    	function()
				    	{
				    		location.reload();
				    	},
				    	function(error)
				    	{
				    		errorBox(error);
				    	});	
				});
	
}





function openWeekDayProgDialog(json, filial, weekDay)
{
	var weekDayNames = ['','понедельник','вторник','среду','четверг','пятницу','субботу','воскресенье'];

	var dlg = openDialogBoxWithButtons("Правка расписания на "+weekDayNames[weekDay], 700, 500);

	var toolBar = createToolBar(dlg.innerElement);
	toolBar.style.width="100%";
	createSpeedButton(toolBar, "plus.gif", "Добавить",
		function()
		{


			var block = scrollBox.firstChild;
			var since = '12:00';
			while(block)
			{
				if (block.toEditor)
				{
					if (block.toEditor.value > since) since = block.toEditor.value;
				}
				block = block.nextSibling;
			}

			var to = '14:00';
			var g = since.match(/^(\d+):(\d+)/);
			if (g)
			{
				to = (parseInt(g[1])+2).toString()+':'+g[2];
			}



			block = scrollBox.appendChild(createBlock({since:since,to:to,desc:0,'comment':''}));
			scrollBox.scrollTop=1000000000;
			block.sinceEditor.focus();
		});

	var delBtn = createSpeedButton(toolBar, "del.png", "Удалить",
		function()
		{
			if (!activeBlock) return;

			yesNoDialog("Удалить запись из расписания?","Удаление",
				function()
				{
					if (!activeBlock) return false;
					scrollBox.removeChild(activeBlock);
					setActiveBlock(null);
				});
		});
	toolBar.end();


	delBtn.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=788;
	scrollBox.style.height=400;
	scrollBox.style.backgroundColor="#99AABB";

	var activeBlock = null;

	var setActiveBlock = function(block)
	{
		activeBlock = block;
		if (activeBlock)
		{
			delBtn.setDisabled(false);
		}
		else
		{
			delBtn.setDisabled(true);
		}
	}

	var createBlock = function(prog)
	{
		var div = document.createElement('DIV');
		div.style.marginTop=4;
		div.style.marginBottom=4;
		div.style.border="1px solid #6699CC";
		div.style.backgroundColor="e0e0e0";
		div.style.borderRadius="10px";
		div.style.padding="8 8 8 8";


		var table = div.appendChild(document.createElement('TABLE'));
		table.style.width="100%";
		var tbody = table.appendChild(document.createElement('TBODY'));
		
		var tr = tbody.appendChild(document.createElement('TR'));

		var td = tr.appendChild(document.createElement('TD'));
		td.width="1%";
		td.noWrap=true;
		td.align="right";
		td.innerHTML = 'с:';
		td.vAlign="bottom";

		td = tr.appendChild(document.createElement('TD'));
		td.width="1%";
		td.vAlign="bottom";

		var sinceEditor = div.sinceEditor = td.appendChild(createInput('time'));
		sinceEditor.style.width=100;
		sinceEditor.value=prog.since;
		sinceEditor.block = div;
		sinceEditor.onfocus = function() { setActiveBlock(this.block); }

		td = tr.appendChild(document.createElement('TD'));
		td.width="99%";
		td.innerHTML='Мероприятие:<br>';

		var progComboBox = div.progEditor = td.appendChild(document.createElement('SELECT'));
		progComboBox.style.width="100%";
		var op = progComboBox.appendChild(document.createElement('OPTION'));
		op.text = '';
		op.value = 0;

		for(var i=0; i < json.progdescriptions.length; i++)
		{
			op = progComboBox.appendChild(document.createElement('OPTION'));
			op.text = _html_(json.progdescriptions[i].name);
			op.value = _html_(json.progdescriptions[i].id);
			if (prog.desc == json.progdescriptions[i].id) op.selected=true;
		}
		progComboBox.getValue = function()
		{
			return this.options[this.selectedIndex].value;	
		};
		progComboBox.block = div;
		progComboBox.onfocus = function() { setActiveBlock(this.block); }


		tr = tbody.appendChild(document.createElement('TR'));

		var td = tr.appendChild(document.createElement('TD'));
		td.width="1%";
		td.noWrap=true;
		td.align="right";
		td.innerHTML = 'до:';
		td.vAlign="bottom";

		td = tr.appendChild(document.createElement('TD'));
		td.width="1%";
		td.vAlign="bottom";

		var toEditor = div.toEditor = td.appendChild(createInput('time'));
		toEditor.style.width=100;
		toEditor.value=prog.to;
		toEditor.block = div;
		toEditor.onfocus = function() { setActiveBlock(this.block); }

		td = tr.appendChild(document.createElement('TD'));
		td.width="99%";
		td.innerHTML='Комментарий:<br>';

		var commentEditor = div.commentEditor = td.appendChild(createInput('text'));
		commentEditor.style.width="100%";
		commentEditor.placeholder="Неделя, группа и т.п.";
		commentEditor.value=prog.comment;
		commentEditor.block = div;
		commentEditor.onfocus = function() { setActiveBlock(this.block); }

		return div;
	}


	for(var i=0; i < json.programs.length; i++)
	{
		scrollBox.appendChild(createBlock(json.programs[i]));
	}

	var btn = dlg.buttonPanel.appendChild(createInput('button'));
	btn.value="OK";
	btn.onclick=function()
		{
			var text = '';
			var block = scrollBox.firstChild;
			while(block)
			{
				if (block.sinceEditor)
				{
					if (text!='') text+='\n';

					text+=block.sinceEditor.value;
					text+='\t';
					text+=block.toEditor.value;
					text+='\t';
					text+=block.progEditor.getValue();
					text+='\t';
					text+=block.commentEditor.value.trim();
				}
				block = block.nextSibling;
			}


			var btn = this;
			btn.disabled=true;

			sendXHR('api.php','action=prog:set&filial='+filial+'&weekday='+weekDay+'&programs='+encodeURIComponent(text),
				function()
				{
					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 editProg(filial, weekDay)
{
	sendXHR("api.php","action=prog:get&filial="+filial+"&weekday="+weekDay,
		function(response)
		{
			openWeekDayProgDialog(JSON.parse(response), filial, weekDay);	
		},
		function(error)
		{
			errorBox(error);
		});	
}

May the force be with you, always.