Your IP : 18.119.103.130


Current Path : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/modules/main/admin/
Upload File :
Current File : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/modules/main/admin/task_edit.php

<?
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage main
 * @copyright 2001-2013 Bitrix
 */

/**
 * Bitrix vars
 * @global CUser $USER
 * @global CMain $APPLICATION
 */

require_once(__DIR__."/../include/prolog_admin_before.php");
define("HELP_FILE", "users/task_edit.php");

ClearVars();

if (!$USER->CanDoOperation('view_tasks'))
	$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));

IncludeModuleLangFile(__FILE__);

/***************************************************************************
Handling GET | POST
****************************************************************************/

$ID = intval($_REQUEST['ID'] ?? 0);
$COPY_ID = intval($_REQUEST["COPY_ID"] ?? 0);

if($COPY_ID > 0)
	$ID = $COPY_ID;

$message = null;

$aTabs = array(
	array("DIV" => "edit1", "TAB" => GetMessage("TAB_1"), "ICON" => "", "TITLE" => GetMessage("TAB_1_TITLE")),
	array("DIV" => "edit2", "TAB" => GetMessage("TAB_2"), "ICON" => "", "TITLE" => GetMessage('TAB_2_TITLE'))
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);

if($_SERVER["REQUEST_METHOD"]=="POST" && (!empty($_POST['save']) || !empty($_POST['apply'])) && $USER->CanDoOperation('edit_tasks') && check_bitrix_sessid())
{
	$aMsg = Array();
	$LETTER = mb_strtoupper($_POST["LETTER"]);
	$arFields = array
	(
		"NAME" => $_POST["NAME"],
		"DESCRIPTION" => $_POST["DESCRIPTION"],
		"LETTER" => $LETTER,
		"BINDING" => $_POST["BINDING"],
		"MODULE_ID" => $_POST["MODULE_ID"]
	);

	if($ID>0 && $COPY_ID<=0)
	{
		CTask::UpdateModuleRights($ID, $_POST["MODULE_ID"], $LETTER);
		CTask::Update($arFields, $ID);
	}
	else
	{
		$ID = CTask::Add($arFields);
	}

	/** @var CAdminException $e */
	if($e = $APPLICATION->GetException())
		$aMsg = $e->messages;

	if(empty($aMsg))
	{
		if (!isset($_POST['OPERATION_ID']))
			$arOperationIds = Array();
		else
			$arOperationIds = $_POST['OPERATION_ID'];

		$old_arOperationIds = CTask::GetOperations($ID);
		if (!empty(array_diff($old_arOperationIds, $arOperationIds)) || !empty(array_diff($arOperationIds, $old_arOperationIds)))
		{
			CTask::SetOperations($ID, $arOperationIds);
		}

		if (!empty($_POST["save"]))
			LocalRedirect("task_admin.php?lang=".LANGUAGE_ID);
		elseif (!empty($_POST["apply"]))
			LocalRedirect($APPLICATION->GetCurPage()."?lang=".LANGUAGE_ID."&ID=".$ID."&".$tabControl->ActiveTabParam());
	}
	else
	{
		$message = new CAdminMessage(GetMessage('TASK_SAVE_ERROR'), new CAdminException($aMsg));
	}
}

$z = CTask::GetByID($ID);
if(!$z->ExtractFields("str_") || $ID == 0)
{
	$ID = 0;
	$str_NAME = '';
	$str_DESCRIPTION = '';
	$str_LETTER = '';
	$str_SYS = 'N';
	$str_BINDING = 'module';
	$str_MODULE_ID = 'main';
}
else
{
	if($COPY_ID>0)
		$str_SYS = 'N';
}

$sDocTitle = ($ID>0 && $COPY_ID<=0? GetMessage("EDIT_TASK_TITLE", array("#ID#"=>$ID)) : GetMessage("NEW_TASK_TITLE"));
$APPLICATION->SetTitle($sDocTitle);

/***************************************************************************
				HTML form
****************************************************************************/

require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");

$aMenu = array(
	array(
		"TEXT"	=> GetMessage("RECORD_LIST"),
		"TITLE"	=> GetMessage("RECORD_LIST_TITLE"),
		"LINK"	=> "/bitrix/admin/task_admin.php?lang=".LANGUAGE_ID."&amp;set_default=Y",
		"ICON"	=> "btn_list"
	)
);

if($ID > 0 && $COPY_ID <= 0)
{
	$aMenu[] = array("SEPARATOR"=>"Y");

	$aMenu[] = array(
		"TEXT"	=> GetMessage("MAIN_NEW_RECORD"),
		"TITLE"	=> GetMessage("MAIN_NEW_RECORD_TITLE"),
		"LINK"	=> "/bitrix/admin/task_edit.php?lang=".LANGUAGE_ID,
		"ICON"	=> "btn_new"
	);
	$aMenu[] = array(
		"TEXT"	=> GetMessage("MAIN_COPY_RECORD"),
		"TITLE"	=> GetMessage("MAIN_COPY_RECORD_TITLE"),
		"LINK"	=> "/bitrix/admin/task_edit.php?lang=".LANGUAGE_ID."&amp;COPY_ID=".$ID,
		"ICON"	=> "btn_copy"
	);
	if ($USER->CanDoOperation('edit_tasks') && $str_SYS != 'Y')
	{
		$aMenu[] = array(
			"TEXT"	=> GetMessage("MAIN_DELETE_RECORD"),
			"TITLE"	=> GetMessage("MAIN_DELETE_RECORD_TITLE"),
			"LINK"	=> "javascript:if(confirm('".GetMessage("MAIN_DELETE_RECORD_CONF")."')) window.location='/bitrix/admin/task_admin.php?ID=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."&action_button=delete';",
			"ICON"	=> "btn_delete"
		);
	}
}

$context = new CAdminContextMenu($aMenu);
$context->Show();
?>
<?
if($message)
	echo $message->Show();
?>

<form method="POST" action="<?echo $APPLICATION->GetCurPage()?>?" name="form1">
<?=bitrix_sessid_post()?>
<input type="hidden" name="lang" value="<?echo LANG?>">
<input type="hidden" name="ID" value="<?echo $ID?>">
<?if($COPY_ID <> ''):?><input type="hidden" name="COPY_ID" value="<?echo htmlspecialcharsbx($COPY_ID)?>"><?endif?>
<?
$tabControl->Begin();

$tabControl->BeginNextTab();
if (isset($_POST['NAME']))
{
	$str_NAME = htmlspecialcharsbx($_POST['NAME']);
	$str_DESCRIPTION = htmlspecialcharsbx($_POST['DESCRIPTION'] ?? '');
	$str_MODULE_ID = htmlspecialcharsbx($_POST['MODULE_ID'] ?? '');
	$str_BINDING = htmlspecialcharsbx($_POST['BINDING'] ?? '');
	$str_LETTER = htmlspecialcharsbx($_POST['LETTER'] ?? '');
}

$dbOperations = COperation::GetList();

$arOperations = Array();
$arBindings = Array();
?>
<script>
var arOperations = [];
var arBingings = {};
<?
while ($arOperation = $dbOperations->Fetch())
{
	$mid = $arOperation["MODULE_ID"];
	if (!isset($arBindings[$mid]))
	{
		$arBindings[$mid] = Array();
		?>arBingings['<?=$mid?>'] = {};<?
	}
	if (!in_array($arOperation["BINDING"], $arBindings[$mid]))
	{
		$arBindings[$mid][] = $b = $arOperation["BINDING"];
		$bindingTitle = CTask::GetLangTitle($b, $mid);
		if ($bindingTitle == $b)
		{
			$bindingTitle = CTask::GetLangTitle($bindingTitle, "main");
		}
		?>arBingings['<?=$mid?>'].<?=$b?> = "<?=$bindingTitle?>";<?
	}

	$arOperations[] = array(
		'ID' => $arOperation["ID"],
		'NAME' => $arOperation["NAME"],
		'TITLE' => COperation::GetLangTitle($arOperation["NAME"], $arOperation["MODULE_ID"]),
		'BINDING' => $arOperation["BINDING"],
		'MODULE_ID' => $arOperation["MODULE_ID"],
		'DESCRIPTION' => COperation::GetLangDescription($arOperation["NAME"],$arOperation["DESCRIPTION"], $arOperation["MODULE_ID"])
	);
}
\Bitrix\Main\Type\Collection::sortByColumn($arOperations, 'TITLE');
?>
</script>

	<tr class="adm-detail-required-field">
		<td width="40%"><?=GetMessage('NAME')?></td>
		<td width="60%"><input type="text" name="NAME" size="40" maxlength="100" value="<? echo CTask::GetLangTitle($str_NAME, $str_MODULE_ID);?>"></td>
	</tr>
	<tr class="adm-detail-required-field">
		<td><?=GetMessage('MODULE_ID')?></td>
		<td>
		<script>
		var arModules = ['main'];
		</script>
		<select name="MODULE_ID" id="__module_id_select">
			<option value="main" <? echo ($str_MODULE_ID == 'main') ? 'selected' : '';?>><?=GetMessage('KERNEL')?></option>
		<?
		$modules = COperation::GetAllowedModules();
		foreach($modules as $MID):
			if ($MID == "main")
				continue;
			if (!($m = CModule::CreateModuleObject($MID)))
				continue;
		?>
			<script>arModules.push('<?=$MID?>');</script>
			<option value="<?=htmlspecialcharsbx($MID)?>"<?echo ($str_MODULE_ID == $MID? ' selected' : '');?>><?=htmlspecialcharsbx($m->MODULE_NAME);?></option>
		<?endforeach;?>
		</select>
		</td>
	</tr>
	<tr>
		<td><?echo GetMessage('SYS_TITLE')?>:</td>
		<td><?echo ($str_SYS == 'Y') ? GetMessage("MAIN_YES") : GetMessage("MAIN_NO")?></td>
	</tr>
	<tr>
		<td><?=GetMessage('TASK_BINDING')?>:</td>
		<td>
		<?
		if (!isset($arBindings[$str_MODULE_ID]) || count($arBindings[$str_MODULE_ID]) < 1)
			$arBindings[$str_MODULE_ID] = Array('module');
		?>
		<select name="BINDING" id="__binding_select">
			<?
			for ($i = 0, $l = count($arBindings[$str_MODULE_ID]); $i < $l; $i++)
			{
				$b = $arBindings[$str_MODULE_ID][$i];
				$bindingTitle = CTask::GetLangTitle($b, $str_MODULE_ID);
				if ($bindingTitle == $b)
				{
					$bindingTitle = CTask::GetLangTitle($bindingTitle, "main");
				}
				echo '<option value="'.$b.'" '.($b == $str_BINDING ? 'selected' : '').'>'.$bindingTitle.'</option>';
			}
			?>
		</select>
		</td>
	</tr>
	<tr>
		<td><?echo GetMessage('LETTER')?>:</td>
		<td>
		<input type="text" name="LETTER" size="1" maxlength="1" value="<?=$str_LETTER?>">
		</td>
	</tr>
	<tr>
		<td class="adm-detail-valign-top"><?echo GetMessage('DESCRIPTION')?></td>
		<td><textarea name="DESCRIPTION" cols="30" rows="5"><? echo CTask::GetLangDescription($str_NAME, $str_DESCRIPTION, $str_MODULE_ID);?></textarea>
		</td>
	</tr>
	<?$tabControl->BeginNextTab();?>
	<tr>
		<td colspan="2" align="center">
		<table border="0" cellpadding="5" cellspacing="0" align="center">
			<tr>
				<td width="10%" align="center">&nbsp;</td>
				<td width="90%">&nbsp;</td>
			</tr>
			<?
			$arTaskOperations = $_POST['OPERATION_ID'] ?? CTask::GetOperations($ID);

			$ind = -1;
			foreach($arOperations as $arOperation)
			{
				$ind++;
				?>
				<tr id="operation_row_<?=$ind?>"
				<?echo (($arOperation["MODULE_ID"] != $str_MODULE_ID) || ($arOperation["BINDING"] != $str_BINDING)) ? 'style="display: none"' : ''?>>
					<td align="right" style="padding: 0 10px 0 10px">
						<input type="checkbox" name="OPERATION_ID[]" id="OPERATION_ID_<?=$ind ?>" value="<?=$arOperation["ID"]?>" <? echo (in_array($arOperation["ID"], $arTaskOperations)) ? " checked" : ''?>>
						<script>
						arOperations['<?=$ind?>'] = {
							name : '<?=CUtil::JSEscape($arOperation["TITLE"])?>',
							module_id : '<?=$arOperation["MODULE_ID"]?>',
							binding : '<?=$arOperation["BINDING"]?>'
						}
						</script>
					</td>
					<td align="left">
					<label for="OPERATION_ID_<?= $ind ?>"
						title="<?=htmlspecialcharsbx($arOperation["DESCRIPTION"]);?>">
						<?=htmlspecialcharsbx($arOperation["TITLE"])?>
						<?if($arOperation["TITLE"] != $arOperation['NAME']):?>
						(<?=htmlspecialcharsbx($arOperation['NAME'])?>)
						<?endif;?>
					</label></td>
				</tr>
				<?
			}
			?>
			<tr>
				<td align = "center" colSpan = "2"><div id = '__noneopermess' style="display: none;"></div></td>
			</tr>
		</table>
		<script>
		var __module_id_select = document.getElementById('__module_id_select');
		var __binding_select = document.getElementById('__binding_select');
		var _noneopermess = document.getElementById('__noneopermess');
		var noOperMess = "<?=GetMessageJS('TASK_NONE_OPERATIONS');?>";

		__module_id_select.onchange = function(e)
		{
			var arB = arBingings[this.value];
			if (arB)
			{
				__binding_select.options.length = 0;
				for (var k in arB)
					__binding_select.options[__binding_select.options.length] = new Option(arB[k], k);
			}

			var binding = __binding_select.value;
			var operation_count = arOperations.length, ch;
			var bShowNoneOperMess = true;
			for (var i = 0; i < operation_count; i++)
			{
				ch = document.getElementById('OPERATION_ID_'+i);
				if (arOperations[i].module_id == this.value && arOperations[i].binding == binding)
				{
					document.getElementById('operation_row_'+i).style.display = (jsUtils.IsIE() ? 'block' : 'table-row');
					if (arOperations[i].was_checked)
						ch.checked = true;
					if (bShowNoneOperMess)
						bShowNoneOperMess = false;
				}
				else
				{
					document.getElementById('operation_row_'+i).style.display = 'none';
					if (ch.checked)
					{
						ch.checked = false;
						arOperations[i].was_checked = true;
					}
				}
			}
			showNoneOperMess(bShowNoneOperMess);
		};

		__binding_select.onchange = function(e)
		{
			var operation_count = arOperations.length, ch;
			var bShowNoneOperMess = true;
			for (var i=0;i < operation_count; i++)
			{
				ch = document.getElementById('OPERATION_ID_'+i);
				var module_id = __module_id_select.value;
				if (arOperations[i].binding == this.value && arOperations[i].module_id == module_id)
				{
					document.getElementById('operation_row_'+i).style.display = (jsUtils.IsIE() ? 'block' : 'table-row');
					if (arOperations[i].was_checked)
						ch.checked = true;
					if (bShowNoneOperMess)
						bShowNoneOperMess = false;
				}
				else
				{
					document.getElementById('operation_row_'+i).style.display = 'none';
					if (ch.checked)
					{
						ch.checked = false;
						arOperations[i].was_checked = true;
					}
				}
			}
			showNoneOperMess(bShowNoneOperMess);
		};

		var showNoneOperMess = function(bShow)
		{
			if (bShow)
			{
				var m_title, bind_title;
				var m_id = __module_id_select.value;
				var l = __module_id_select.options.length;
				for (var i = 0; i < l; i++)
				{
					if (m_id == __module_id_select.options[i].value)
						m_title = __module_id_select.options[i].innerHTML;
				}
				var b_id = __binding_select.value;
				l = __binding_select.options.length;
				for (i = 0; i < l; i++)
				{
					if (b_id == __binding_select.options[i].value)
						bind_title = __binding_select.options[i].innerHTML;
				}
				var _t = noOperMess.replace(/#MODULE_ID#/, m_title);
				_noneopermess.innerHTML = _t.replace(/#BINDING#/, bind_title);
				_noneopermess.style.display = 'block';
			}
			else
				_noneopermess.style.display = 'none';
		};
		</script>
		</td>
	</tr>
<?
$tabControl->Buttons(array("disabled" => (!$USER->CanDoOperation('edit_tasks') || $str_SYS == 'Y'), "back_url"=>"task_admin.php?lang=".LANGUAGE_ID));
$tabControl->End();
?>
</form>

<?$tabControl->ShowWarnings("form1", $message);?>

<?require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");?>